题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解题思路
当只有1个台阶时,只有一种跳法,那就是1。
当有2个台阶时,则有两种跳法,分别是1+1和2。
当有3个台阶时,则有3种跳法,分别是1+1+1,1+2和2+1。
当有4个台阶时,则有5种跳法,分别是1+1+1+1,1+1+2,1+2+1,2+1+1和2+2。
当有5个台阶时,则有8种跳法
…
以此类推,则有如下的规律
设阶梯数为number,跳法为way
number0=1,way0=1
number1=2,way2=2
number2=3,way3=3=way1+way2
number3=4,way4=5=way2+way3
number4=5,way4=8=way3=way4
…
所以这道题归根到底是斐波那契数列问题,这里用的是循坏迭代法来解决这个问题。
方法
class Solution:
def jumpFloor(self, number):
# write code here
f0=1
f1=2
a=[1,2]
if number==1:
return f0
if number==2:
return f1
else:
for i in range(2,number+1):
a.append(a[i-1]+a[i-2])
f0=f1
f1=a
return a[number-1]