有這樣乙個題目:
遞迴函式:
1計算x(x(8))遞迴呼叫次數。int x(intn)2
7else
811 }
大多數可能覺得這是乙個很簡單的題目,的確很簡單。
但是要想在沒有編譯器的情況下正確的算出這個遞迴
呼叫次數其實還是需要點耐心.
x(x(8))我們先計算x(8),我們用count=0計數遞迴呼叫次數
1.x(8)=x(6)+x(4)+1 count=1;
2.x(6)=x(4)+x(2)+1,x(4)=x(2)+x(0)+1 x(8)=x(4)+2*x(2)+x(0)+3 count=3;
3.x(4)=x(2)+x(0)+1 x(8)=3*x(2)+2*x(0)+4 count=4
4.x(2)=1,x(0)=1; x(8)=9 count=9
再計算x(9)
1.x(9)=x(7)+x(5)+1 count=10
2.x(7)=x(5)+x(3)+1,x(5)=x(3)+x(1)+1 x(9)=x(5)+2*x(3)+x(1)+3 count=12
3.x(5)=x(3)+x(1)+1 x(9)=3*x(3)+2*x(1)+4 count=13
4.x(3)=1 x(1)=1 x(9)=3+2+4=9 count=18
接下來我們再用程式驗證一下:
1 #include 2執行截圖:using
namespace
std;34
static
int count=0;5
6int x(intn)7
13else
1418}19
20int main(void)21
驗證正確了
對於這種計算遞迴呼叫次數一定要思路清晰,最好是將所有的遞迴呼叫都遞迴到遞迴出口的
地方再統一進行遞迴出口的呼叫,這樣不容易造成紊亂,個人意見,僅供參考。
控制遞迴的次數
經常會用到遞迴,雖然能解決很多問題,但其缺點很明顯,有可能無法跳出造成死迴圈,能控制遞迴次數就可以避免這種情況。用lua嘗試了幾種方法,第一種,在方法內定義乙個變數計數 function recursiontest local times 0 if times 10 then times times...
1113 遞迴呼叫的次數統計
description 如下程式的功能是計算 fibonacci數列的第n項。函式fib 是乙個遞迴函式。請你改寫該程式,計算第n項的同時,統計呼叫了多少次函式fib 包括main 對fib 的呼叫 include int fib int k int main void int fib int k ...
python 遞迴函式及遞迴次數受到限制的解決辦法
乙個函式在內部呼叫自己,那麼這個函式是遞迴函式。遞迴會反覆使用本身,每遞迴一次,越接近最終的值。當乙個問題可以由許多相似的小問題解決,可以考慮使用遞迴函式。隨著遞迴的深入,問題規模相比上次都應所減小。return函式本身的方法保證了遞迴的持續進行,但是如果沒有明確的結束條件,遞迴會無限進行下去。所以...