乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法(先後次序不同算不同的結果)。
當台階為n=1,跳法f(n)=1;
當台階為n=2,跳法f(n)=2; 方法(1,1)(2)
當台階為n=3,跳法f(n)=3; 方法(1,1,1)(1,2)(2,1)
當台階為n=4,跳法f(n)=5; 方法(1,1,1,1)(1,1,2)(1,2,1)(2,1,1)(2,2)
觀察f(n)其實為斐波那契數列,所以
依次類推,可以遞迴求出n級階梯跳法之和。f(n)=f(n-1)+f(n-2);
f (n
)=
1 & n=1 \\ 2 & n= 2 \\ f(n-1)+f(n-2) & n>2 \end
f(n)=⎩
⎪⎨⎪⎧
12f
(n−1
)+f(
n−2)
n=1
n=2n
>2
解法一 :直接用公式,但是效率低。
public
class
solution
if(target==
1||target==2)
return
jumpfloor
(target-1)
+jumpfloor
(target-2)
;}}
解法二:把已經得到的數列的中間項儲存下來。下次計算的時候先查詢。
public
class
solution;if
(target<3)
int jump_nminusone=2;
int jump_nminustwo=1;
int jump_n=0;
for(int i=
3;i<=target;i++
)return jump_n;
}}
劍指offer 跳台階
跳台階1 題目 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。思路 遞迴思想 可以理解為前面m步的情況加上最後一步的情況,前面m步理解為,m 1步加上最後一步的情況。最後一步分為2中情況,上1級和上2級。如下 class solution 跳台階2 題目 ...
劍指Offer 跳台階
乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 解析 當青蛙到到n級時,有兩種跳法,一種是從n 1級跳1級,還有種是n 2跳2級 f n f n 1 f n 2 大家對這個公式是不是很熟悉,對,是斐波那契數列。所以這是一道動態規劃的問題。斐波那契數列,只能上...
劍指Offer 跳台階
author tom qian email tomqianmaple outlook.com github date 2017年8月10日 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。思路 首先窮舉一下到達最後一級台階的情況,分析最後到達是一步還是兩步。...