变态跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

思路:n=1,f=1

   n=2,f=2(1;2)

   n=3,f=4(111;12;21;3)

   n=4,f=5(11111,121,112,211,4,13,31)

   由规律可知n=k(k>1)时,要k*2次

   也可以倒过来跳,n个台阶,现在跳一个,剩下要f(n-1)+f(n-2)+.....1

                现在我们再跳一个,现在在n-1格,那么还需要f(n-2)+....+1

     合起来就是f(n)=2f(n-1) n>1

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloorII(self, number):
        # write code here
                if number<1:
                    return 0
                if number==1:
                    return 1
                a=1
                for i in range(2,number+1):
                    b=a*2
                    a=b
                return b
posted @ 2020-05-09 19:55  Roronoa-Zoro  阅读(164)  评论(0编辑  收藏  举报