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

為了賬號安全,請及時綁定郵箱和手機立即綁定

求解答:“遞歸函數中,位于遞歸調用后的語句的執行順序和各個被調用函數的順序相反”這句話在語句的執行中的具體意思

求解釋的詳細點

謝謝大家

正在回答

2 回答

哥,你頭像好騷啊

1 回復 有任何疑惑可以回復我~
#1

w鮮花哥哥w 回復 很社會的太陽 提問者

哈哈??梢怨缓苌鐣?/div>
2018-12-05 回復 有任何疑惑可以回復我~
int?getPeachNumber(int?n){????int?num;????//定義所剩桃子數
????if(n==10)
????{???????
????????return?1;
????}?
????else
????{
????????num?=?(getPeachNumber(n+1)+1)*2;???//這里是不應該用遞歸呢?
????????printf("第%d天所剩桃子%d個\n",?n,?num);?//天數,所剩桃子個數
????}????
????return?num;
}

就以試題的遞歸函數來說:

if(n==10)

這個判斷語句,在調用遞歸之前,屬于遞歸調用前的語句,這沒問題吧。

printf("第%d天所剩桃子%d個\n",?n,?num);

這句輸出函數,在調用遞歸之后,屬于遞歸調用后的語句,這沒問題吧。


關于各個被調用函數的順序是什么樣的呢?

我們從?

int?num?=?getPeachNumber(1);

開始看,傳入的參數是 1,而遞歸終結是 n = 10。所以說各個被調用函數的順序應該是從 1 往 10 依次遞增的。


其中 if(n==10) 這句判斷語句就是按照從 1 往 10 依次判斷的。所以說:位于遞歸調用前的語句和各級被調用函數具有相同的執行順序;


而 我們再看?

printf("第%d天所剩桃子%d個\n",?n,?num);

它輸出 n 的順序卻是從 10 到 1 依次遞減。所以說:位于遞歸調用后的語句的執行順序和各個被調用函數的順序相反;

10 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

求解答:“遞歸函數中,位于遞歸調用后的語句的執行順序和各個被調用函數的順序相反”這句話在語句的執行中的具體意思

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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