麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

遞歸

2019-11-14 09:17:03
字體:
供稿:網(wǎng)友

基本遞歸

遞歸有兩個階段:遞推與回歸。

遞推:在遞推階段每一個遞歸調(diào)用通過進一步調(diào)用自己來記住這次遞歸過程。當其中有調(diào)用滿足終止條件時,遞推結束。

回歸:函數(shù)調(diào)用已逆序的方式回歸,直到最初調(diào)用的函數(shù)返回為止,此時遞歸過程結束。

基本上來說,一個程序由4個區(qū)域組成:代碼段、靜態(tài)數(shù)據(jù)區(qū)、堆與棧。代碼段包含程序運行時所執(zhí)行的機器指令。靜態(tài)數(shù)據(jù)區(qū)包含在程序生命周期都一直存在的數(shù)據(jù),不如全局變量和靜態(tài)局部變量。堆包含程序運行時動態(tài)分配的空間,比如malloc。棧包含函數(shù)調(diào)用的信息。如下圖所示:

這里寫圖片描述

下面是一個使用遞歸計算階乘的例子:

int fact(int n){ if (n < 0) { return 0; } else if (n == 0 || n == 1) { return 1; } else { return n * fact(n - 1); }}

尾遞歸

為了解決普通遞歸需要相當大的空間來保存函數(shù)信息,提出了尾遞歸的遞歸方式。

當遞歸調(diào)用是整個函數(shù)中最后執(zhí)行的語句且它的返回值不屬于表達式的一部分時,這個遞歸調(diào)用就是尾遞歸的。

當編譯器檢查到一個函數(shù)是尾遞歸的時候,它就會覆蓋當前活躍記錄而不是在棧中去創(chuàng)建一個新的,這樣就解決了普通遞歸函數(shù)占用棧空間過大的問題。

使用尾遞歸修改上面的列子:

int facttail(int n, int a){ if (n < 0) { return 0; } else if (n == 0 || n == 1) { return a; } else { return facttail(n - 1, n * a); }}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 成人免费视频视频在线观看 免费 | 免费观看高清视频网站 | 亚洲国产在 | 免费一级片网站 | 欧美日本免费一区二区三区 | 鲁人人人鲁人人鲁精品 | 羞羞答答xxdd在线播放 | av在线免费网 | 中文字幕国产亚洲 | 草久影院 | 久久网站热最新地址 | 成人福利在线 | 亚洲影院在线 | 4p嗯啊巨肉寝室调教男男视频 | 亚洲午夜在线视频 | 精品国产一区二区三区天美传媒 | 欧美一级黄色网 | 免费欧美精品 | 少妇一级淫片免费看 | 中文字幕在线播放一区 | 特黄一区二区三区 | 九九热免费精品视频 | 久久久电影电视剧免费看 | 日韩精品久久久久久久电影99爱 | 国产人妖一区二区 | 一级黄色片武则天 | 1级黄色毛片 | 一级看片免费视频 | 中文在线日韩 | 一级毛片免费高清 | 国产大片中文字幕在线观看 | 少妇一级淫片免费看 | 日日摸夜夜骑 | 一级视频在线播放 | 特级毛片a级毛片100免费 | 97中文| 久久精品一区视频 | 一区二区三区日韩精品 | 97超级碰碰人国产在线观看 | 国产精品成人久久 | 91成人一区|