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

C語言的遞歸思想實例分析

 更新時間:2014年09月16日 10:47:46   投稿:shichen2014  
這篇文章主要介紹了C語言的遞歸思想,以一個實例的形式針對數(shù)據(jù)變化規(guī)律分析了遞歸思想的本質(zhì),需要的朋友可以參考下

本文實例分析C語言的遞歸思想,分享給大家供大家參考之用。具體方法如下:

通俗點來說,遞歸就是自己調(diào)用自己

遞歸的難點一是理解遞歸的執(zhí)行調(diào)用過程,二是設(shè)置一個合理的遞歸結(jié)束條件

下面來看一段摘自書中的簡單程序:

#include <STDIO.H>
long fact(int n);
long rfact(int n);
int main(void)
{
 int num;
 printf("This program calculates factorials.\n");
 printf("Enter a value in the range 0-12 (q to quit):\n");
 while(scanf("%d",&num)==1)
 {
 if(num<0)
  printf("No negative numbers,please.\n");
 else if (num>12)
 {
  printf("Keep input under 13.\n");
 }
 else
 {
  printf("loop:%d factorial=%d\n",num,fact(num));
  printf("recursion:%d factorial=%d\n",num,rfact(num));
 }
 }
}

long fact(int n)
{
 long ans;
 for (ans=1;n>1;n--)
 {
 ans*=n;
 }
 return ans;
}

long rfact(int n)
{
 long ans;
 if (n>0)
 {
 ans=n*rfact(n-1);
 } 
 else
 {
 ans=1;
 }
 return ans;
}

該程序用來計算階乘,分別采用循環(huán)和遞歸實現(xiàn)。用語言來描述一下遞歸的執(zhí)行過程吧。
假設(shè)計算5!,n=5,分別調(diào)用了自己4次,即n分別等于4,3,,2,1。當n等于0時,返回ans=1,這時rfact這個函數(shù)才剛剛完整的執(zhí)行一遍,返回ans=1,

壓棧已經(jīng)完成,開始出棧。

n與ans,分別相乘5次,即ans分別等于1,2,6,24,120(24*5)

即5!=120

我們來看一下n的變化規(guī)律

入棧時,n=5,4,3,2,1,

出棧時,n=1,2,3,4,5

遞歸實質(zhì)上就是棧。

往往容易忽略遞歸條件不滿足后,被調(diào)函數(shù)把控制權(quán)轉(zhuǎn)會主調(diào)函數(shù),主調(diào)函數(shù)繼續(xù)執(zhí)行剩余的語句這一過程,而造成迷惘。

其實,所有事情都可以用生活中的事情加以解釋,就像四大名著相互相通,可以互相解釋一樣,做一件事情可以不要求甚至不清楚最后的結(jié)果,但是一定要明白這件事情是在做什么,明白這件事情來龍去脈,但是不要死鉆牛角尖,靜心做學問。

感興趣的朋友可以測試運行本文實例以加深理解,相信本文所述對大家C程序設(shè)計的學習有一定的借鑒價值。

相關(guān)文章

  • Qt實現(xiàn)高準確率的語音識別

    Qt實現(xiàn)高準確率的語音識別

    Vosk是一個開源的語音識別工具,支持中英文及多種語言,具備離線識別能力,且不依賴互聯(lián)網(wǎng),本文就來聊聊如何使用Vosk API在C++中進行中英文識別吧
    2024-11-11
  • 利用C++實現(xiàn)雙鏈表基本接口示例代碼

    利用C++實現(xiàn)雙鏈表基本接口示例代碼

    雙鏈表:在單鏈表的每個結(jié)點中,再設(shè)置一個指向其前驅(qū)結(jié)點的指針域,下面這篇文章主要給大家介紹了關(guān)于利用C++實現(xiàn)雙鏈表基本接口的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • C語言零基礎(chǔ)徹底掌握預(yù)處理上篇

    C語言零基礎(chǔ)徹底掌握預(yù)處理上篇

    在C語言的程序中包括各種以符號#開頭的編譯指令,這些指令稱為預(yù)處理命令。預(yù)處理命令屬于C語言編譯器,而不是C語言的組成部分,通過預(yù)處理命令可擴展C語言程序設(shè)計的環(huán)境
    2022-08-08
  • 深入分析C語言存儲類型與用戶空間內(nèi)部分布

    深入分析C語言存儲類型與用戶空間內(nèi)部分布

    這篇文章主要介紹了C語言存儲類型與用戶空間內(nèi)部分布,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-12-12
  • VC++實現(xiàn)文件與應(yīng)用程序關(guān)聯(lián)的方法(注冊表修改)

    VC++實現(xiàn)文件與應(yīng)用程序關(guān)聯(lián)的方法(注冊表修改)

    這篇文章主要介紹了VC++實現(xiàn)文件與應(yīng)用程序關(guān)聯(lián)的方法,涉及VC++針對注冊表的相關(guān)操作技巧,需要的朋友可以參考下
    2016-08-08
  • C++中std::tuple和std::pair的實現(xiàn)

    C++中std::tuple和std::pair的實現(xiàn)

    std::tuple和std::pair是兩種極具實用性的數(shù)據(jù)結(jié)構(gòu),本文主要介紹了C++中std::tuple和std::pair的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • Qt學習之容器的使用詳解

    Qt學習之容器的使用詳解

    Qt容器主要優(yōu)點就是在所有的平臺上的運行都表現(xiàn)的一致,并且它們都是隱含共享的,這篇文章就來和大家講講Qt中容器的具體用法吧,希望對大家有所幫助
    2023-03-03
  • C++實現(xiàn)日期類的方法詳解

    C++實現(xiàn)日期類的方法詳解

    這篇文章主要給大家介紹了C++實現(xiàn)日期類的方法,文中通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • 平衡二叉樹AVL操作模板

    平衡二叉樹AVL操作模板

    這篇文章主要介紹了平衡二叉樹AVL操作模板,需要的朋友可以參考下
    2014-02-02
  • C語言算法的定義及分析詳解

    C語言算法的定義及分析詳解

    這篇文章主要為大家詳細介紹了C語言算法的定義及分析,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評論

遂川县| 当涂县| 开江县| 靖宇县| 天长市| 陈巴尔虎旗| 海晏县| 大姚县| 汝城县| 平遥县| 黄大仙区| 海安县| 泾川县| 咸宁市| 南乐县| 徐州市| 三台县| 大庆市| 沁阳市| 尼勒克县| 惠来县| 靖边县| 海南省| 拜城县| 陈巴尔虎旗| 泰安市| 恩施市| 金川县| 广西| 方山县| 华容县| 山阳县| 伊宁县| 白河县| 桐梓县| 宝坻区| 苏尼特右旗| 启东市| 鲜城| 外汇| 佛学|