- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
递回的阶层函数
Chapter 5 程式結構簡介 函數-黑盒子 程式敘述執行函數稱為「函數呼叫」(Functions Call) 程式設計者不需了解函數內部實際的程式碼及其細節 函數如同一個黑盒子(Black Box) 告訴程式設計者如何使用-「使用介面」(Interface) 函式的概念 函式結構 函式標題 傳回值的型態 函式名稱 函式參數 函式主體 return敘述 Example p173 函式標題 傳回值型態 函式名稱(參數串列) 使用函式 函式原型 Ex: double power(double x, int n); 必須以分號結尾 程式閱讀Ex5_01.cpp 引數傳遞 傳值 傳址(指標) 引數傳遞 Call by Value Ex5_02.cpp Call by Address Ex5_03.cpp 傳遞陣列 Ex5_04.cpp Ex5_05.cpp (利用指標表示法) Ex5_06.cpp (多維陣列) 引數傳遞-使用參考值 參考值是變數的別名 仍使用原本變數 Ex5_08.cpp 優點 直接存取引述內容, 省去copy動作 利用const可以避免修改 函式傳回值 傳回指標 Ex5_09.cpp 傳回位址 勿傳回區域變數的位址 利用動態記憶體配置(new, delete) 儲存在free store中, 會一直存在, 直到使用delete或程式結束 傳回參考值 Chapter 9 函式的靜態變數 全域變數? 靜態變數 第一次呼叫才初始化 程式執行期間都會被保留 Ex5_11.cpp 遞迴 Recursive Function 函式裡可以包含呼叫函式本身的敘述 分為 直接遞迴 間接遞迴 func1 call func2 and func2 call func1 遞迴的階層函數 遞迴函數最簡易的應用是數學的階層函數n!,如下所示: 遞迴的階層函數 例如:計算4!的值,從上述定義n0,使用n!定義的第2條計算階層函數4!的值,如下所示: 4!=4*3*2*1=24 因為階層函數本身擁有遞迴特性。可以將4!的計算分解成子問題,如下所示: 4!=4*(4-1)!=4*3! 現在3!的計算成為一個新的子問題,必須先計算出3!值後,才能處理上述的乘法。 6-5-2 遞迴的階層函數-過程2 同理將子問題3!繼續分解,如下所示: 3! = 3*(3-1)! = 3*2! 2! = 2*(2-1)! = 2*1! 1! = 1*(1-1)! = 1*0! = 1*1 = 1 最後在知道1!的值後,接著就可以計算出2!~4!的值,如下所示: 2! = 2*(2-1)! = 2*1! = 2 3! = 3(3-1)! = 3*2! = 3*2 = 6 4! = 4*(4-1)! = 4*3! = 24 遞迴的階層函數 /* 函數: 計算n!的值 */ long factorial(int n) { if ( n == 1 ) /* 終止條件 */ return 1; else return n * factorial(n-1); } Ex5_12.cpp * * 函式 主程式 函式 double power(double x, int n) { // Function body starts here... double result = 1.0; // Result stored here for(int i = 1; i=n; i++) result *= x; return result; } 將變數實際儲存的記憶體位置傳入,所以在函數變更參數值,也會同時變動原呼叫的變數值 傳址呼叫Call by Reference 將變數的值傳入函數,函數另外需要配置記憶體儲存參數值,所以並不會變更呼叫變數的值 傳值呼叫Call by Value 說明 傳遞方式
您可能关注的文档
最近下载
- 发改价格[2007]670号监理收费标准.pdf VIP
- 发改价格【2007】670号《建设工程监理与相关服务收费管理....docx VIP
- 最新实用医学汉语-医学课件.ppt VIP
- 医学汉语教学大纲.doc VIP
- 水工建筑物外观质量评定标准.docx VIP
- 英语国际音标表(8个)打印版.doc VIP
- 升立德 E系列控制卡快速入门.pdf VIP
- 欧盟发布电池和废电池的新规(EU) 附中译文参照_182518812544822.pdf VIP
- 9.3抗日战争80周年阅兵九三阅兵小小爱国者探索手册PPT(优质ppt).pptx VIP
- 部编版六年级语文上册《 开国大典》PPT课件(含教案).pptx VIP
文档评论(0)