题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思路:
首先我们先缩小可计算的范围,设置台阶数为n,台阶跳法为m,比如:
当n=1时,此时有一级台阶,则跳法m=1;
当n=2时,此时有两级台阶,可以跳两次一级台阶,也可以一次跳两级台阶。则跳法m=2;
当n=3时,此时有三级台阶,可以跳三次一级台阶,也可以一次跳一级和一次跳两级,反之也成立,则跳法m=3;
当n=4时,此时有四级台阶,可以跳四次一级台阶,可以跳两次两级台阶,可以一次跳一级和一次两级和一次一级,也可以两次一级和一次两级反之也成立,则m=5;
。。。。。。
看到这里是不是想到了什么?---斐波那契数列,哈哈,对头还是斐波那契数列,只不过此次有点不太一样的是在写方法的时候稍微注意一下便可以。
这样子,我们只要知道了n-1和n-2台阶的跳法,就可以得到n台阶的跳法。
参考代码如下:
class Solution:
def JumpFloor(self,floor):
if floor <= 2:
return floor;
pre1 = 2
pre2 = 1
curr = 0
for i in range(3,floor + 1):
curr = pre1 + pre2
pre2 = pre1
pre1 = curr
return curr
solu = Solution()
for i in range(1,7):
print(solu.JumpFloor(i))
更多精彩请关注:
你想要的都在这里哦~
网友评论