最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言數(shù)據(jù)結(jié)構(gòu)遞歸之斐波那契數(shù)列

 更新時間:2017年10月31日 08:47:02   作者:Vit_rose  
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)遞歸之斐波那契數(shù)列的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下

C語言數(shù)據(jù)結(jié)構(gòu)遞歸之斐波那契數(shù)列

因為自己對遞歸還是不太熟練,于是做POJ1753的時候就很吃力,就是翻棋子直到棋盤上所有棋子的顏色一樣為止,求最少翻多少次,方法是枚舉遞歸。然后就打算先做另一道遞歸的題(從數(shù)組中取出n個元素的組合),但是同樣在遞歸的問題上不太理解。好吧,于是復(fù)習CPP,在第229頁的時候,看到了斐波那契數(shù)列,回想起之前做過的一道題目,發(fā)現(xiàn)可以用遞歸的方法來做。于是決定優(yōu)化一下之前的代碼。

以下這段摘自《C primer plus》

斐波那契數(shù)列的定義如下:第一個和第二個數(shù)字都是1,而后續(xù)的每個數(shù)字是其前兩個數(shù)字之和,例如,數(shù)列中前幾個數(shù)字是1,1,2,3,5,8和13?!旅嫖覀儎?chuàng)建一個函數(shù),它接受一個正整數(shù)n作為參數(shù),返回相應(yīng)的斐波那契數(shù)值。

首先,關(guān)于遞歸深度,遞歸提供了一個簡單的定義。如果調(diào)用Fibonacci(),當n為1或2時Fibonacci(n)應(yīng)返回1;對于其他數(shù)值應(yīng)返回Fibonacci(n-1)+Fibonacci(n-2);

long Fibonacci(n)
{
  if (n > 2)
    return Fibonacci(n-1)+Fibonacci(n-2);
  else
    return 1;
}

然后是兔子總數(shù)問題。

有一對兔子,從出生后第三個月起每個月都生一對兔子,小兔子長到第三個月后又生一對兔子,假如兔子都不死,每個月兔子對數(shù)為多少?

思考這道題的時候,如果你簡單的推算一下,會發(fā)現(xiàn)兔子每個月的對數(shù)就是斐波那契數(shù)列。

第一個月:1對;
第二個月:1對;
第三個月:2對;
第四個月:3對:
第五個月:5對:
第六個月:8對;
……

我之前做這道題的時候,覺得思路很簡單,就是從第三個月起,求每個月的兔子數(shù)時,只要把這個月的前兩個月總數(shù)相加。
這是我之前的代碼,用f1和f2表示月。:

#include<stdio.h>
int main()
{
  int f1,f2;
  int month,ct;
  printf("請輸入月份:");
  scanf("%d",&month);
  if(month<=2)
    printf("兩只。\n");
  if (month > 2)
  {
    f1 = f2 = 1;
    ct = 0;
    while(ct < month -2){
      f1 = f1+f2;
      ct += 1;
      f2 = f1+f2;
      ct += 1;
    }
    if (month %2 == 0){
      printf("第 %d 個月的兔子對數(shù)為:%d.\n",month,f2);
    }
    if (month %2 == 1){
      printf("第 %d 個月的兔子對數(shù)為:%d.\n",month,f1);
    }
  }
  return 0;
}

其實這個代碼離遞歸就差一步,很接近了。但是我當時完全沒有想到。

這是我重新修改之后的代碼:

#include<stdio.h>
long Fibonacci(n)
{
  if (n > 2)
    return Fibonacci(n-1)+Fibonacci(n-2);
  else
    return 1;
}
int main()
{
  long num;
  int month;
  printf("請輸入月份:");
  scanf("%d",&month);
  num = Fibonacci(month);
  printf("這個月的兔子對數(shù)為%d.\n",num);
  return 0;
}

只是很簡單的修改,但是代碼就整潔易懂了很多,也學到了新內(nèi)容。

工欲善其事必先利其器,共勉。

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Linux下C語言修改進程名稱的方法

    Linux下C語言修改進程名稱的方法

    這篇文章主要介紹了Linux下C語言修改進程名稱的方法,涉及Linux下使用C語言操作進程的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • C語言使用DP動態(tài)規(guī)劃思想解最大K乘積與乘積最大問題

    C語言使用DP動態(tài)規(guī)劃思想解最大K乘積與乘積最大問題

    Dynamic Programming動態(tài)規(guī)劃方法采用最優(yōu)原則來建立用于計算最優(yōu)解的遞歸式,并且考察每個最優(yōu)決策序列中是否包含一個最優(yōu)子序列,這里我們就來展示C語言使用DP動態(tài)規(guī)劃思想解最大K乘積與乘積最大問題
    2016-06-06
  • C++中單調(diào)棧的基本性質(zhì)介紹

    C++中單調(diào)棧的基本性質(zhì)介紹

    這篇文章主要介紹了單調(diào)棧的基本性質(zhì)介紹,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++實現(xiàn)簡單24點游戲

    C++實現(xiàn)簡單24點游戲

    這篇文章主要為大家詳細介紹了C++實現(xiàn)簡單24點游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C語言SQLite3事務(wù)和鎖的操作實例

    C語言SQLite3事務(wù)和鎖的操作實例

    這篇文章主要介紹了C語言SQLite3事務(wù)和鎖的操作,結(jié)合完整實例形式分析了C語言針對SQLite3數(shù)據(jù)庫的事務(wù)與鎖相關(guān)操作技巧,需要的朋友可以參考下
    2017-07-07
  • 用C語言實現(xiàn)單鏈表的各種操作(一)

    用C語言實現(xiàn)單鏈表的各種操作(一)

    本篇文章是對用C語言實現(xiàn)單鏈表的各種操作進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++中獲取字符串長度的函數(shù)sizeof()、strlen()、length()、size()詳解和區(qū)別(推薦)

    C++中獲取字符串長度的函數(shù)sizeof()、strlen()、length()、size()詳解和區(qū)別(推薦)

    在C++中計算長度的函數(shù)有四種,它們分別是sizeof()?,size(),strlen(),str.length(),這篇文章主要介紹了C++中獲取字符串長度的函數(shù)sizeof()、strlen()、length()、size()詳解和區(qū)別,需要的朋友可以參考下
    2023-02-02
  • Qt項目打包的實現(xiàn)步驟

    Qt項目打包的實現(xiàn)步驟

    本文主要介紹了Qt項目打包的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • C++Vector容器常用函數(shù)接口詳解

    C++Vector容器常用函數(shù)接口詳解

    最近我學習了C++中的STL庫中的vector容器,對于常用容器,我們不僅要會使用其常用的函數(shù)接口,我們還有明白這些接口在其底層是如何實現(xiàn)的。所以特意整理出來一篇博客供我們學習
    2022-08-08
  • 2~62位任意進制轉(zhuǎn)換方法(c++)

    2~62位任意進制轉(zhuǎn)換方法(c++)

    下面小編就為大家?guī)硪黄?~62位任意進制轉(zhuǎn)換方法(c++)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論

容城县| 娄底市| 安吉县| 石屏县| 项城市| 涿州市| 正蓝旗| 望都县| 泸水县| 桐城市| 华阴市| 万年县| 万全县| 双牌县| 聂拉木县| 商洛市| 乡宁县| 兴安县| 敦化市| 准格尔旗| 开阳县| 石阡县| 弥渡县| 蛟河市| 大余县| 祁门县| 高邮市| 和林格尔县| 青浦区| 藁城市| 康乐县| 方山县| 花莲县| 三都| 远安县| 彰武县| 昌邑市| 漾濞| 大埔县| 滕州市| 盘锦市|