变态跳台阶

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

分析

级台阶有 种跳法,根据最后一次跳台阶的数目可以分解为最后一次一级,则前面需要跳 级,有 种跳法;最后一次跳两级,则前面需要跳 级,有 种跳法。以此类推 易知,
$$
两式相减得,

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloorII(self, n):
        if n<0:
            return 0
        ans = 1
        for i in range(1,n):
            ans = 2*ans
        return ans