题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
示例
输入1 返回值1
输入4 返回值5
知识点
跳台阶问题(递归)
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
初始值很容易得到,当n > 2时,跳上n级台阶最后一步无外乎两种情况,从第n-1级跳一级跳上来,或是从第n-2级跳2级跳上来,因此很容易得到如下递归公式。
F(0)= 0
F(1)= 1
F(2)= 2
F(n)= F(n-1)+ F(n-2)(n > 2)
代码
与07斐波那契数列一样,直接写递归函数会报错,改为用数组处理
#递归
# -*- coding:utf-8 -*- class Solution: def jumpFloor(self, number): # write code here if number==1: return 1 elif number==2: return 2 else: return self.jumpFloor(number-1)+self.jumpFloor(number-2)
#数组
# -*- coding:utf-8 -*- class Solution: def jumpFloor(self, number): # write code here res=[0,1,2] while number>=len(res): res.append(res[-1]+res[-2]) return res[number]