变态跳台阶(python)
题目
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路
是斐波那契数列和跳台阶得升级版,详情在上篇和上上篇博客。
采用和跳台阶一样的分析方法:
记跳n级台阶的跳法有 f(n) 种,
如果最后一次跳了 1 级,那么一共的跳法是 n-1 级台阶的跳法,即 f(n-1),
如果最后一次跳了 2 级,那么一共的跳法是 n-2 级台阶的跳法,即 f(n-2),
如果最后一次跳了 3 级,那么一共的跳法是 n-3 级台阶的跳法,即 f(n-3),
……
……
如果最后一次跳了 n-1 级,那么一共的跳法是 1 级台阶的跳法,即 f(1)
那么,n 级台阶得跳法就有 f(n) = f(n-1) + f(n-2) + f(n-3) + ··· ··· + f(1) 记为 ① 式
同理,n -1 级台阶得跳法就有 f(n-1) = f(n-2) + f(n-3) + f(n-4) + ··· ··· + f(1) 记为 ② 式
由 ① - ② ,得到 f(n) = 2f(n-1)
我们知道 f(1) = 1 ,f(2) = 2 ,再结合这个数学表达式,代码非常简单
代码
class Solution:
def jumpFloorII(self, number):
# write code here
return pow(2,number-1)