题目:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思考: n = 1, 1 ---1种 n = 2, 1+1 2 ---2种 n = 3, 1+1+1 1+2, 2+1 ---3种 n = 4, 1+1+1+1 1+1+2, 1+2+1, 2+1+1 2+2 ---5种 n = 5, 1+1+1+1+1 1+1+1+2 *4 1+2+2 *3 ---8种 n随便为多少,都有一个全1的情况。然后剩下的可两两1结合,分奇偶? 醉了,这还在用数学的方式思考!!!傻子!!要变换思维了啊!!重新思考(参考了书): n > 2的时候,第一次跳可选择跳1级,或者2级。 跳1级:那剩下的n-1级台阶,就是f(n-1)种跳法 跳2级:那剩下的n-2级台阶,就是f(n-2)种跳法 -> f(n) = f(n-1) + f(n-2) -> 斐波那契!!!!
class Solution:
def jumpFloor(self, number):
first = 1
second = 2
num = 0
if number == 1:
return 1
elif number == 2:
return 2
else:
for i in range(2, number):
num = first + second
first = second
second = num
return num