【算法】——遞歸:小白正在上樓梯,樓梯有n階台階,小白一次可以上1階,2階或者3階,實現一個方法,計算小白有多少種走完樓梯的方式。


分析:從最后一步分析,能有的情況有三種情況構成,寫出如圖所示的方程

//和斐波拉契相似
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 
  }  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM