Python剑指offer-JZ9-变态跳台阶
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
题目分析
从题目可以得知我们从1~n的级数都可以跨,那么参考JZ8中普通跳台阶的经验,我们此时就有了n种跨出最后一步的选择.分别为最后一步跨1级,跨2级…一直到跨n级到达终点.即:f(n)=f(n-1)+f(n-2)+…+f(1).容易推出f(n-1)=f(n-2)+f(n-3)+…+f(1).两式子做替换易得f(n)=2f(n-1)(n>1).
Python代码(牛客网)
# -*- coding:utf-8 -*-
class Solution:
def jumpFloorII(self, number):
# write code here
if number==1:
return 1
ret=1
a=1
for i in range(2,number+1):
ret=2*a
a=ret
return ret