面试题10:青蛙变态跳台阶


# -*- coding:utf-8 -*-
class Solution:
def jumpFloorII(self, number):
# write code here
# 先找规律试下
# number = 1; 1
# number = 2; 2
# number = 3; 4
# number = 4; 8
# 1,2,4,8,...,2^(n-1)能推理出公式规律
# 则number = n; 2^(n-1)
# return pow(2,number-1)
# 方法2:重新反向思考,如果把n级台阶的跳法看成n的函数f(n),则青蛙跳
# f(n) = f(n-1) + f(n-2) + ...+ f(1)
# 同理:
# f(n-1) = f(n-2) + f(n-3) + ... + f(1)
# 即: f(n) = f(n-1) + f(n-1) = 2f(n-1)
# 这时候看这个其实比fibnacci公式还要简单
if number == 1:
return 1
a = 1
temp = 1
for i in range(1,number):
temp = 2 * a
a = temp
return temp

浙公网安备 33010602011771号