首页 > 编程语言 > 详细

【算法】——递归:小白正在上楼梯,楼梯有n阶台阶,小白一次可以上1阶,2阶或者3阶,实现一个方法,计算小白有多少种走完楼梯的方式。

时间:2020-02-21 19:18:12      阅读:702      评论:0      收藏:0      [点我收藏+]

技术分享图片技术分享图片技术分享图片分析:从最后一步分析,能有的情况有三种情况构成,写出如图所示的方程

//和斐波拉契相似
int void f(int n)
{
    //考虑出口
    if(n==0) return 0;//正常思路是返回0 
    if(n==1) return 1;//通过自己想可以得出只有1种方式
    if(n==2) return 2;//通过自己想可以得到只有2种方法 
    return f(n-1)+f(n-2)+f(n-3);//递归计算 
  }  

 

 但是在验算的时候发现当n=3的时候,结果为f(2)+f(1)+f(0)=3;不符合,通过思考应该是4种,所以把n==0时返回1 

验算思路如图所示技术分享图片

最终代码:

//和斐波拉契相似
int void f(int n)
{
    //考虑出口
    if(n==0) return 1;//正常思路是返回0 
    if(n==1) return 1;//通过自己想可以得出只有1种方式
    if(n==2) return 2;//通过自己想可以得到只有2种方法 
    return f(n-1)+f(n-2)+f(n-3);//递归计算 
    //但是在验算的时候发现当n=3的时候,结果为f(2)+f(1)+f(0)=3;不符合,通过思考应该是4种,所以把n==0时返回1 
  }  

 

【算法】——递归:小白正在上楼梯,楼梯有n阶台阶,小白一次可以上1阶,2阶或者3阶,实现一个方法,计算小白有多少种走完楼梯的方式。

原文:https://www.cnblogs.com/jessie99/p/Jessie.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!