题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
输入:1
输出:1
输入:4
输出:5
思路:一次只有两种跳法,要么跳一级,要么跳两级,假设 n 级台阶一共有
F
(
n
)
F(n)
F(n) 种跳法,那么最后一次可能是跳了一级也可能是跳了两级,即
F
(
n
)
=
F
(
n
−
1
)
+
F
(
n
−
2
)
F(n) = F(n-1) + F(n-2)
F(n)=F(n−1)+F(n−2),可以采用递归方法。
# -*- coding:utf-8 -*-
class Solution:
def jumpFloor(self, number):
# write code here
if number == 0:
return 1
elif number == 1:
return 1
else:
return self.jumpFloor(number-1)+self.jumpFloor(number-2)
超时,改用迭代的方法写,从递归的出口开始写,逐步递增。
# -*- coding:utf-8 -*-
class Solution:
def jumpFloor(self, number):
# write code here
if number == 0:
return 1
elif number == 1:
return 1
else:
tmp1 = 1
tmp2 = 1
for i in range(2,number+1):
tmp = tmp1 + tmp2
tmp1 = tmp2
tmp2 = tmp
return tmp