算法精解:C语言描述(递归)
生活随笔
收集整理的這篇文章主要介紹了
算法精解:C语言描述(递归)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
算法精解真的是一本不錯的書,雖然我真的不是很喜歡看書,但是不知不覺間就看完了6單元。里面對每一模塊的具體代碼實現和分析,寫的非常透徹。初入CSDN,也是決定要好好學習一波,自此開始好好記錄自己學習的一步步腳印和一次次的失敗。不知道能堅持多久,但希望能久一些。
1.遞歸的認知。
? 不知大佬對遞歸的理解是如何的,在我看來遞歸像是一個悠悠球。當達到某個臨界點時,在原路返回。
? 其實悠悠球就是遞歸的方法,而悠悠球的線就是遞歸方法實現。而線越長(方法實現越差),球從扔出到回來的時間越長(遞歸實現的優劣)。可能理解的較為粗糙。但是我喜歡將學的東西具現化。
程序運行就是最顯著的遞歸表現,A->B->C->B->A。
例:
A() {printf("A");B();printf("A2"); }B() {printf("B");C();printf("B2") }C() {printf("C"); }//輸出結果為: ABCB2A22.遞歸三要素
1、明確遞歸終止條件; 2、給出遞歸終止時的處理辦法; 3、提取重復的邏輯,縮小問題規模。
3.遞歸的簡單實例
3-1以遞歸的方式計算階乘的函數實現
//以遞歸的方式計算階乘的函數實現 int fact(int n) {if(n < 0)return 0;else if(n == 0)return 1;else if(n == 1)return 1;elsereturn n * fact(n-1); }?3-2尾遞歸
//如果一個函數中所有遞歸形式的調用都出現在函數的末尾,我們稱這個遞歸函數是尾遞歸的。 int facttail(int n,int a) //a的初始值為1 {if(n < 0)return 0;else if(n == 0)return 1;else if(n == 1)return a;elsereturn facttail(n-1,n*a); }?
總結
以上是生活随笔為你收集整理的算法精解:C语言描述(递归)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tushare最好用的金融数据接口之一
- 下一篇: 开发工具 快捷键整理