亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

怎樣靈活運用遞歸函數?

怎樣靈活運用遞歸函數?

C
玄天 2016-09-25 18:32:11
看了小編編寫的遞歸函數(二),我有幾個不理解的地方:(網址:http://www.xianlaiwan.cn/code/5510)如何理解int getPeachNumber(int n)中的num?=?(getPeachNumber(n+1)+1)*2;以及int main()中的int?number?=?getPeachNumber(1);這兩行代碼應該怎樣解釋?
查看完整描述

1 回答

已采納
?
慕粉3491951

TA貢獻12條經驗 獲得超0個贊

遞歸用法首先要假設你的程序已經能實現相應的功能

所以int number = getPeachNumber(1);//傳入實參1,得到第一天桃子的數量

遞歸的實現條件:如果一個問題可以分成幾個小問題,其中一個小問題和原來的問題本質上一樣

遞歸的編寫一般步驟:

  1. 編寫語句描述問題的分解步驟(假設遞歸函數已經完成)

  2. 在遞歸函數的開頭編寫分支處理無法分解的情況

上例中第n天的桃子數量其實就是第(n+1)天桃子數量+1然后*2的結果

不管哪一天都可以分解成這種情況

然后分解到第10天就無法分解了,因為第10天只有1個桃子

這樣說不知道你能清楚嗎?


查看完整回答
反對 回復 2016-09-26
  • 玄天
    玄天
    請答主看我的分析: 由于天數由10-n確定,不是由n的值確定。 所以當n=1時,對應天數為9;當n=2時,對應天數為8。 因為第9天的桃子數量是第8天桃子數量的二分之一且少以1,所以可以這樣表示: getPeachNumber(1)=getPeachNumber(2)/2-1; 化簡可以得到(getPeachNumber(1)+1)*2=getPeachNumber(2); 即(getPeachNumber(1)+1)*2=getPeachNumber(1+1); 將1代表為n,則(getPeachNumber(n)+1)*2=getPeachNumber(n+1); 問題是:num=(getPeachNumber(n+1)+1)*2;這一行代碼怎樣變換至num=(getPeachNumber(n+1)+1)*2;?
  • 慕粉3491951
    慕粉3491951
    這里的n就是天數哦,不是10-n,只是因為第一天的桃子數量不能馬上得到,要先得到第二天的,依次遞歸下次 你看到的打印信息是遞歸到第9天因為第10天無法分解返回了1, 然后可以得到第9天的打印信息,依次類推反向打印信息,
  • 1 回答
  • 0 關注
  • 1449 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號