中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言項目爬樓梯的兩種實現方法參考

發布時間:2020-08-31 13:41:49 來源:腳本之家 閱讀:480 作者:迂者-賀利堅 欄目:編程語言

【項目-爬樓梯】

樓梯有n階臺階,上樓可以一步上1階,也可以一步上2階,編一程序計算共有多少種不同的走法?

【參考解答(遞歸法)】

基礎:樓梯有一個臺階,只有一種走法(一步登上去);兩個臺階,有2種走法(一步上去,或分兩次上去);

遞推:有n個臺階時,設有count(n)種走法,最后一步走1個臺階,有count(n-1)種走法;最后一步走2個臺階,有count(n-2)種走法。于是count(n)=count(n-1)+count(n-2)。

可見,此問題的數學模型竟然是斐波那契數。

#include<stdio.h>
int main()
{
 unsigned long count(int n);
 int n;
 unsigned long m;
 printf("請輸入樓梯的階數:");
 scanf("%d",&n);
 m=count(n);
 printf("有%lu種爬樓梯的方法\n",m);
 return 0;
}
unsigned long count (int n)
{
 unsigned long f;
 if(n==1)
  f=1;
 else if(n==2)
  f=2;
 else
  f=count(n-1)+count(n-2);
 return(f);
}

遞歸思路清晰,但卻“成本”高。另一個方法,在完成問題建模之后,采用了一種很巧妙的“非常規”的做法,將運算量減少了一半。

//計163-1姜淇瀚
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
int main()
{
 int fib(int a,int b,int n);
 int n;
 scanf(&quot;%d&quot;,&amp;n);
 printf(&quot;%d&quot;,fib(0,1,n));
 return 0;
}
int fib(int a,int b,int n)
{
 if(n==3)
 {
  return a+b;
 }
  return fib(b,a+b,n-1);
}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

太保市| 克东县| 湖南省| 合阳县| 习水县| 清丰县| 洪江市| 嘉荫县| 吉林省| 贞丰县| 郓城县| 吴旗县| 云南省| 龙江县| 阜阳市| 横峰县| 桂东县| 洛阳市| 临湘市| 漳浦县| 兴文县| 松滋市| 舞阳县| 航空| 抚远县| 湘潭市| 梅州市| 安陆市| 西昌市| 高要市| 兴仁县| 纳雍县| 乐业县| 克拉玛依市| 平谷区| 浪卡子县| 临颍县| 安岳县| 无为县| 西丰县| 安陆市|