一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有 多少总跳法

首先我们考虑最简单的情况:如果只有1 级台阶,那显然只有一种跳法,如果有2 级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1 级;另外一种就是一次跳2 级。
现在我们再来讨论一般情况:我们把n 级台阶时的跳法看成是n 的函数,记为f(n)。当n>2 时,第一次跳的时候就有两种不同的选择:一是第一次只跳1 级,此时跳法数目等于后面剩下的n-1 级台阶的跳法数目,即为f(n-1);另外一种选择是第一次跳2 级,此时跳法数目等于后面剩下的n-2 级台阶的跳法数目,即为f(n-2)。
因此n 级台阶时的不同跳法的总数f(n) = f(n-1) + f(n-2)。
我们把上面的分析用一个公式总结如下:
f(n) =  1  (n=1)
f(n) =  2  (n=2)
f(n) =f(n-1) + (f-2)  (n>2)
分析到这里,相信很多人都能看出这就是我们熟悉的Fibonacci 序列。(O(n))
#include 
    
    
     
     
int JumpStep(int n)  
{  
    if (n <= 0)  return 0;  
    if (n == 1 || n == 2) return n;  
  
    return (JumpStep(n-1) + JumpStep(n-2));  
}  
  
int main(int argc, char *argv[])  
{  
    int nStep = 0;  
    printf("请输入台阶数:");  
    scanf("%d", &nStep);  
    printf("台阶数为 %d,那么总共有 %d种跳法\n", nStep, JumpStep(nStep));  
    return 0;  
} 
    
    

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值