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

首頁 > 學院 > 開發設計 > 正文

遞歸

2019-11-11 07:50:25
字體:
來源:轉載
供稿:網友

基本遞歸

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

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

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

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

這里寫圖片描述

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

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

尾遞歸

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

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

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

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

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); }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品久久久久久久久久久久久久久 | 日韩精品中文字幕一区 | 免费国产视频在线观看 | 高清国产午夜精品久久久久久 | 欧美性受ⅹ╳╳╳黑人a性爽 | 一级国产航空美女毛片内谢 | 国产一区视频在线免费观看 | 一区二区三区在线观看av | 亚洲精品91 | 最新av在线播放 | 2021国产精品视频 | 视频一区二区精品 | 欧美精品国产综合久久 | 精品999www| 国产精品一区视频 | 全黄性性激高免费视频 | 久久久噜噜噜久久熟有声小说 | 久久久在线免费观看 | www.guochanav.com | 亚洲精久| 欧美一级做 | 亚洲成人网一区 | 精品一区二区久久久久久久网精 | a黄在线观看 | 性生活香蕉视频 | 毛片一区二区三区 | 国产精品99久久久久久宅女 | 成人午夜在线播放 | 黄色大片在线观看 | 成人性视频欧美一区二区三区 | 久久久久久久久久久久久国产精品 | 欧美成人一区二区视频 | 欧美一a一片一级一片 | 中文字幕网在线 | 国产精品亚洲一区二区三区在线观看 | 精品xxxx户外露出视频 | 成人精品一区二区三区中文字幕 | 欧美14一15sex性hd | 91综合在线观看 | xxxxxx性 | 欧美一级特级 |