題目描述
乙隻青蛙一次可以跳上1級台階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。
題目分析
分析思路:青蛙對每級台階可選擇過或者不過
換個角度來看,題目的問題等價於,青蛙現在在起點n=0處。目標是n=n處。那麼經過序號1,2,3…n-1層台階。對於每一層台階,都可以隨意選擇通過,或者不通過。
數學歸納法證明
下面是嚴格的數學歸納法證明:
我們設青蛙需要跳上的台階級數為n,f(n)代表乙個青蛙跳上n級台階的跳法數目。
類似於之前的普通青蛙跳台階,我們根據青蛙的第一步跳多少台階分情況進行分析。
青蛙的第一步可以跳1層,2層…n層
(1)青蛙第一步跳到1層,剩下的跳法為f(n-1)
(2) 青蛙第一步跳到2層,剩下的跳法為f(n-2)
…(n-1)青蛙第一步跳到n-1層,剩下的跳法為f(1)
那麼綜上得到
式1:f(n)=f(n-1)+f(n-2)+…f(1)
同理對於f(n-1)有
式2:f(n-1)=f(n-2)+f(n-3)+…f(1)
由上述兩式得到:f(n)=2*f(n-1)
依次類推得到:f(n)=f(1)*2(n-1)=2^(n-1)
綜上所述,不管是哪種分析思路,我們都得到了
當n>=1時,f(n)和n之間的關係
f(n)=2^(n-1)
解決方法
方法一:迴圈實現2的正整數次冪
方法二:用位操作執行
#define _crt_secure_no_warnings
// 青蛙跳台階.
#include
//方法一:迴圈實現2的正整數次冪
intjumpfloor_1
(int n)
return result;};
//方法二 ,位操作方法
intjumpfloor_2
(int n)
intmain()
青蛙跳台階問題
題目 乙隻青蛙一次可以跳上 1 級台階,也可以跳上2 級。求該青蛙跳上乙個n 級的台階總共有多少種跳法。我的思路 最開始我的思路是把這個看成是乙個數學問題,n i 1 k 2先把所有可能滿足這個公式的i和k求出來。然後在對i和k做排列組合。很明顯i的範圍應該是0 public int jumpflo...
青蛙跳台階問題
1 乙隻青蛙一次可以跳上 1 級台階,也可以跳上2 級。求該青蛙跳上乙個n 級的台階總共有多少種跳法。2 乙隻青蛙一次可以跳上1級台階,也可以跳上2 級 它也可以跳上n 級,此時該青蛙跳上乙個n級的台階總共有多少種跳法?分析 1 當n 1,只有1中跳法 當n 2時,有兩種跳法 當n 3 時,有3種跳...
青蛙跳台階問題
問題一 有乙隻青蛙,需要跳上100級台階。青蛙每次可以調一級或者兩級台階。問青蛙有多少種方式可以跳100級台階。思路 逆推 當青蛙站在100級台階上時,那它跳上100級時有可能是從99級跳一級上來的,也可能是從98級跳兩級跳上來的 從98級跳兩個一級包括在從99級跳一級情況內,所以不予考慮 所以f ...