变态跳台阶
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解题思路
记第n级台阶的跳法有f(n)种:
从第n-1级跳1步,有f(n-1)种;
从第n-2级跳2步,有f(n-2)种;
……
从第1级跳n步,有f(1)种;
于是f(n)=f(n-1)+f(n-1)+……+f(1)
使用数列相关知识,推导通项公式:
f(n)= f(n-1)+f(n-1)+……+f(1)=S(n-1),即有
f(n) = S(n-1) ①
f(n-1) = S(n-2) ②
①②式左右相减:
f(n)- f(n-1)= S(n-1)- S(n-2)= f(n-1),即有
可得:f(n)=2
f(n-2),又易知f(1)=1,故:
f(n)是以1为首项2为公比的等比数列
f(n)=2n,n=1,2,3,……
代码:
int JumpFloorII(int target) { return 1<<(target-1); }
「Talk is cheap. Show me the code」

浙公网安备 33010602011771号