1. 程式人生 > >9.變態跳臺階-劍指offer-Python2.7

9.變態跳臺階-劍指offer-Python2.7

劍指offer第9題 牛客網線上程式設計連結 https://www.nowcoder.com/activity/oj
變態跳臺階

題目描述
一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

思路
n=1,有一種跳法
n=2,可以一次跳一個,跳兩次;或者一次跳兩個,跳一次,共兩種跳法
當n>2時,n個臺階,設有f(n)個跳法
如果第一次選擇跳一個臺階,剩下的n-1個臺階有f(n-1)種跳法;
如果第一次選擇跳兩個臺階,剩下的n-2個臺階有f(n-2)種跳法。
如果第一次選擇跳三個臺階,剩下的n-3個臺階有f(n-3)種跳法。
……
如果第一次選擇跳n個臺階,有1種跳法。
所以當有n個臺階時,有f(n)=f(n-1)+f(n-2)+f(n-3)+…+f(1)種跳法。
f(n-1)=f(n-2)+f(n-3)+…+f(1)
兩式相減,得f(n)=2f(n-1)=2^2 f(n-2)=……=2^(n-1)f(1)

Python2.7編寫

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloorII(self, number):
        f1 = 1#只有一級臺階時,一種跳法
        return 2**(number-1) * f1

寫在後面:
參考:8.跳臺階-劍指offer-Python2.7 https://blog.csdn.net/Jason43/article/details/83896188