题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
知识点:递归和循环
分析:
- 只有一个台阶时,有一种跳法。f(1)=1
- 有两个台阶时,有(1,1)、(2)。两种跳法。f(2)=2
- 有三个台阶时,有(1,1,1)、(1,2)、(2,1)三种跳法。f(3)=3
- 有四个台阶时,有(1,1,1,1)、(1,2,1)、(2,1,1)、(2,2)、(1,1,2)五种跳法。f(4)=5
可以看出来这是一个斐波那契数列。从第3个数开始,每个数的值都等于前连个数之和。
所以f(n) = f(n-1)+f(n-2)。
# -*- coding:utf-8 -*-
class Solution:
def jumpFloor(self, number):
# write code here
if number < 1: //当没有台阶时
return -1
elif number <= 2: //当为1个和2个台阶时
return number
a = 1
b = 2
temp = 0
for i in range (2, number): //采用迭代方式计算。同理用递归可能会运行超时
temp = a + b
a = b
b = temp
return temp