题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解题思路
“变态跳台阶”是“青蛙跳台阶”的变体。虽然“青蛙跳台阶”的每阶的跳法的通式符合斐波那契数列的通式定义,但当前“变态跳台阶”则需要重新分析,找到变态跳台阶的规律,即通式。
我们用BT(x)来表示这个变态跳x阶台阶时所有的跳法总数。有以下结果:
台阶为1时:BT(1) = 1
台阶为2时:BT(2) = BT(1) + 1 (可以参考跳台阶里获取跳台阶的通式的分析过程:变态一次可以跳一格,那剩下的跳法一共有BT(1)种;变态也可以一次跳2格,此时跳法只有1种)
台阶为3时:BT(3) = BT(2) + BT(1) + 1 = 2*BT(2)
台阶为4时,BT(4) = BT(3) + BT(2) + BT(1) + 1= 2*BT(3)
… …
台阶为n时,BT(n) = BT(n-1) + BT(n-2) + … + BT(1) + 1 = 2*BT(n-1)
得到:当n>=1时,变态跳台阶的通式是:
BT(n) = 2*BT(n-1) n>0
如此一来,利用递归即可轻易获得结果。
Python
def jumpFloorII(self, number):
if number < 2:
return number
return 2*self.jumpFloorII(number-1)
- 1
- 2
- 3
- 4
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-258a4616f7.css" rel="stylesheet">
</div>