C 模板遞迴深度的思考

2022-09-23 20:36:23 字數 535 閱讀 1661

#include

using namespace std;

template

class a;};

template<>

class a<1>;};

int main()

#include

using namespace std;

template

class a

; static const int result = m+ a::result+a::result;

//這裡運用了二分法大大的減少了遞迴的深度。

//哈哈,這裡任意大的數字都不會報錯了,因為這裡類似於完全二叉樹的形式

//遞迴下去,深度減少,運算的數字可以很大,只不過花費的時間比較多,像

//我用20000來測試,大概等了30秒鐘。我勸大家不要測試太大的數字,雖然

//不會報錯,但是對資源消耗的過多會使電腦卡死,我卡死2次,用200000測試的。

};template

class a

;int main()

C 編譯器的遞迴深度與程式優化思考

遞迴演算法具有程式容易編寫的特點 然而,由於編譯器預分配堆疊空間的限制,遞迴深度並不是無限制的。在遞迴過程中,系統將對當前程式執行狀態儲存 壓入堆疊 並將引數壓棧,然後遞迴。在遞迴完成後,則做出棧操作。當遞迴深度很深時,由於堆疊滿,遞迴無法繼續。那麼,遞迴深度到底是多少呢?如果我們建立無引數傳遞的遞...

C 中模板與多型的思考

開發中遇到個問題,問題如下 有7中型別的資訊,每個型別有相同的地方,也有不用之處,但是類內函式都一樣。最開始考慮用模板實現,因為類內函式一樣,於是寫完,編譯,報錯,查問題。發現模板函式不能在cpp檔案中實現,要將實現與定義都放在.h檔案中。為什麼?這是因為 模板例項化是發生在編譯期 compile ...

關於遞迴的思考

之前有接觸過遞迴,看到別人寫的遞迴函式的 好生羨慕,怎麼就能寫這麼好呢?我怎麼就想不到這樣寫呢?如此等等。就拿fibonacci函式來說吧,乙個普通的函式可能這樣寫 def fib n if n 0 return 0 elif n 1 return 1 else return fib n 1 fib...