题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
分析:找规律
输入 | 可能的跳法 |
---|---|
f(0)=1 | 1 |
f(1)=1 | 1 |
f(2)=2 | (1,1),(2) |
f(3)=3 | (1,1,1),(1,2),(2,1) |
f(4)=5 | (1,1,1,1),(1,1,2),(1,2,1),(2,1,1),(2,2) |
… | … |
f(n)=f(n-2)+f(n-1) | … |
递归实现
# -*- coding:utf-8 -*-
class Solution:
def jumpFloor(self, number):
# write code here
if 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
#
prenum = 1
preprenum = 1
res = 1
for i in range(1, number):
res = prenum + preprenum
preprenum = prenum
prenum = res
return res