题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解题思路
这题可以从多个角度考虑,最简单的方法令n=1,2,3,4就可以发现规律为f(n)=f(n-1)+f(n-2)。
用分治法的思想考虑这道题,对于n级台阶,青蛙有两种起跳方式:1.起跳时跳1级,那么剩下的n-1级就有f(n-1)种跳法。2.起跳时跳2级,那么剩下的n-2级就有f(n-2)种跳法。所以一共有f(n)=f(n-1)+f(n-2)种跳法。实际上就是斐波那契数列去掉首项后的数列。所以程序和前一篇博客内容基本相同,不再赘述
Python代码
# -*- coding:utf-8 -*-
class Solution:
def jumpFloor(self, number):
# write code here
f1 = 1
f2 = 2
if number <= 2:
ans = number
return ans
else:
for i in range(2, number):
ans = f1 + f2
f1 = f2
f2 = ans
return ans