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

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

《C Primer Plus》讀書筆記——遞歸

2019-11-14 11:28:41
字體:
來源:轉載
供稿:網友

遞歸的原理

一個函數調用其本身,此調用過程為遞歸(recursion)。

遞歸的使用

舉個栗子:

/*用來測試UpAndDown函數的驅動程序*/#include <stdio.h>void UpAndDown (int);int main(void){ UpAndDown(1); return 0;}void UpAndDown (int n){ 輸出如下:

輸出如下:

遞歸的基本原理

每級遞歸都使用其私有變量(如例子中的n)

每次函數調用都返回前一級(調用他那級)遞歸

遞歸函數中,位于遞歸調用前的語句和各級被調函數具有相同執行順序

遞歸函數中,位于遞歸調用后的語句和各級被調函數具有相反執行順序

每級遞歸會從頭執行而不是復制其函數代碼,所以一般可代替循環語句。

遞歸函數必須包含可以終止遞歸調用的語句(如if)。

尾遞歸

最簡單的遞歸形式。

把遞歸調用語句放在函數結尾(return語句之前)。

舉個栗子: 計算n的階乘

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; //1.零的階乘;2.結束遞歸。 return ans;}

遞歸和反向計算

將一個整數轉換成二進制形式。

void ToBinary (unsigned long n) // 簡單須存數組版遞歸{ int r; r = n % 2; if(n >= 2) ToBinary(n / 2); putchar('0' + r); //or: putchar(r ? '1' : '0') return;}

遞歸的優缺點

優點算法簡單缺點占內存,難于閱讀和維護

舉個栗子:斐波那契數列:第一、二個數字都是1,而后續的每個數字是其前兩個數字之和。1、1、2、3、5、8、13……

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

雙重遞歸。 致命弱點:每級調用變量數以指數遞增!

Something interesting …

main( )也可以被自身遞歸調用或其他函數調用,盡管用得少。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久精品国产精品亚洲 | 日韩黄色影视 | 欧美日韩经典在线 | 日韩专区在线 | 一起草av在线 | 27xxoo无遮挡动态视频 | 国产精品久久国产精品 | h视频在线免费看 | 神马久久精品综合 | 欧美日本色 | 久草亚洲视频 | 成人国产免费观看 | 欧美成人影院 | 一级免费观看 | av影院在线播放 | 草莓视频久久 | 在线播放91| 一级做a爰片性色毛片2021 | 国产精品午夜未成人免费观看 | 国产一级爱c视频 | 黄色网址免费在线播放 | 国产精品啪一品二区三区粉嫩 | 毛片一区二区三区 | 成人一级黄色大片 | 久久精品操 | 亚洲国产小视频 | 久国久产久精永久网页 | 麻豆porn | 沉沦的校花奴性郑依婷c到失禁 | 另类亚洲孕妇分娩网址 | 美国人成人在线视频 | 成人三级电影在线 | 亚洲va久久久噜噜噜久牛牛影视 | 成人毛片100部 | 性爱免费在线视频 | 日本高清视频网站www | 黄色av网站免费 | 欧美人与性禽动交精品 | 一级黄色在线观看 | 国产免费福利视频 | 欧美性激情视频 |