程式設計 青蛙跳台階

2021-07-25 12:03:28 字數 1127 閱讀 7527

乙隻青蛙一次可以跳上1級台階,也可以跳上2 級……它也可以跳上n 級,此時該青蛙跳上乙個n級的台階總共有多少種跳法?

下面我們有數學歸納法分析一下這個問題:

用fib(n)表示青蛙跳上n階台階的跳法數,青蛙一次性跳上n階台階的跳法數1(n階跳),設定fib(0) = 1;

當n = 1 時, 只有一種跳法,即1階跳:fib(1) = 1;

當n = 2 時, 有兩種跳的方式,一階跳和二階跳:fib(2) = fib(1) + fib(0) = 2;

當n = 3 時,有三種跳的方式,第一次跳出一階後,後面還有fib(3-1)中跳法; 第一次跳出二階後,後面還有fib(3-2)中跳法;第一次跳出三階後,後面還有fib(3-3)中跳法

fib(3) = fib(2) + fib(1)+fib(0)=4;

當n = n 時,共有n種跳的方式,第一次跳出一階後,後面還有fib(n-1)中跳法; 第一次跳出二階後,後面還有fib(n-2)中跳法..........................第一次跳出n階後, 後面還有                fib(n-n)中跳法.

fib(n) = fib(n-1)+fib(n-2)+fib(n-3)+..........+fib(n-n)=fib(0)+fib(1)+fib(2)+.......+fib(n-1)

又因為fib(n-1)=fib(0)+fib(1)+fib(2)+.......+fib(n-2)

兩式相減得:fib(n)-fib(n-1)=fib(n-1) 

即:fib(n) = 2*fib(n-1)     (n >= 2)

遞迴等式如下:

下面用迴圈實現上面等式:

[html]view plain

copy

#include 

<

stdio.h

>

int jump_num(int n)  

for(i= n

; i 

>

1; i--)  

return num;  

}  int main()  

青蛙跳台階

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。解題思路 1 如果兩種跳法,1階或者2階,那麼假定第一次跳的是一階,那麼剩下的是n 1個台階,跳法是f n 1 2 假定第一次跳的是2階,那麼剩下的是n 2個台階,跳法是f n 2 3 總跳法為 f n f n...

青蛙跳台階

之前面試遇到了這種題目,不會,後來搜尋了一下,感覺分析的很好 青蛙跳乙個n階的台階,每次可以跳1階或者2階,求跳完n階y有多少種方法。分析 n 1,f n 1 n 2,f n 2 n 3,f n 3 n 4,f n 5 可以發現 f n f n 1 f n 2 由此也可以推想 比如要跳到第4階樓梯上...

青蛙跳台階

難易程度 中等 題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。在不考慮青蛙健康狀況的情況下 求該青蛙跳上乙個n級的台階總共有多少種跳法。思路 在本題的描述中,青蛙的行動只有兩種可能 一次跳乙個台階或者兩個台階,設n階台階的跳法為 f n 如果第一次跳了一階,那麼剩下的n 1階的跳法為f n...