题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
题解
跳上1级台阶:1种
跳上2级台阶:2种
跳上3级台阶:
- 最后跳1级,2种
- 最后跳2级,1种
…
…
跳上n级台阶:
- 最后跳1级,f(n-1) 种
- 最后跳2级,f(n-2) 种
即 f(n) = f(n-1) + f(n-2)
看到这里你肯定会发现这其实就是“斐波那契数列”的变种,不了解的可以看我这篇文章 牛客-剑指offer 07 | 斐波那契数列,直接上代码:
# -*- coding:utf-8 -*-
class Solution:
def jumpFloor(self, number):
# write code here
if number == 1:
return 1
elif number == 2:
return 2
else:
n = 0
n1 = 1
n2 = 2
for i in range(3, number+1):
n = n1 + n2
n1 = n2
n2 = n
return n