關於遞迴次數的計算

2022-07-26 14:21:08 字數 1114 閱讀 5823

有這樣乙個題目:

遞迴函式:

1

int x(intn)2

7else

811 }

計算x(x(8))遞迴呼叫次數。

大多數可能覺得這是乙個很簡單的題目,的確很簡單。

但是要想在沒有編譯器的情況下正確的算出這個遞迴

呼叫次數其實還是需要點耐心.

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函式本身的方法保證了遞迴的持續進行,但是如果沒有明確的結束條件,遞迴會無限進行下去。所以...