变态跳台阶
问题描述
一只青蛙一次可以跳上1级台阶,也可以跳上2台阶…它也可以跳上n级台阶。求该青蛙跳上一个n级台阶总共与多少种跳法。
解题思路
https://www.processon.com/view/link/60b1efc97d9c0878764403ae
f(n) = f(n-1) + f(n-2) + f(n-3) + … + f(1) = 2f(n-1)
f(n-1) = f(n-2) + f(n-3) + … + f(1) = 2f(n-2)
f(n-2) = f(n-3) + … + f(1)
…
通项
n > 1 f(n)=2f(n-1)
n=1 f(1) = 1
代码实现
class Solution():
def jump_floor_II(self, number):
if number < 1:
return 0
# n = 1 f(1)= 1
if number == 1:
return 1
# n = 2 f(2)=2;n=3 4; n =5 8;
a = 1 # 初始前一次的结果是n=1,即a=1
sum = 0
for i in range(2, number+1):
sum = 2 * a # f(n) = 2f(n-1) a是上一次二次乘完的结果
a = sum
return sum