剑指offer08-跳台阶

题目描述

一只青蛙一次可以跳上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]

 

 

posted @ 2020-11-16 20:23  foolangirl  阅读(62)  评论(0编辑  收藏  举报