課程
/后端開發
/C
/C語言入門
運算到最后的時候不是n==1?為什么返回值不是1,而是遞歸的返回值??????
2016-09-08
源自:C語言入門 5-7
正在回答
因為在主方法main中調用了getWordNumber方法,當函數走到int num = getWordNumber(10)時又會返回去調用getwordNumber方法;反復執行直到滿足遞歸函數終結條件停止;
遞歸函數的執行過程:執行時遇到getWordNumber(10),保存當前的n(n-1)+n以及getWordNumber(10)執行完后的返回地址;然后繼續執行,繼續對局部變量和函數返回地址入棧保存。直到遇到遞歸結束條件,開始彈棧,這是將棧頂n域值恢復給n,棧頂地址域作為返回地址出棧,繼續這樣下去,直到???,最終所得的n就是所要求得值。
舉報
C語言入門視頻教程,帶你進入編程世界的必修課-C語言
3 回答這里的return 1 代表什么?是返回sum=1 嗎? 求大佬解釋
2 回答到最后明明應該return 1;的啊,為什么返回值不是1呢?不懂!
5 回答最后為什么返回值是0就不行了
1 回答函數返回值代碼求解
5 回答(例題)return表示返回值,最后n是被1賦值,那最終不應該為1么,為什么前面再怎么遞歸最終都為1 啊
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-09-08
因為在主方法main中調用了getWordNumber方法,當函數走到int num = getWordNumber(10)時又會返回去調用getwordNumber方法;反復執行直到滿足遞歸函數終結條件停止;
遞歸函數的執行過程:執行時遇到getWordNumber(10),保存當前的n(n-1)+n以及getWordNumber(10)執行完后的返回地址;然后繼續執行,繼續對局部變量和函數返回地址入棧保存。直到遇到遞歸結束條件,開始彈棧,這是將棧頂n域值恢復給n,棧頂地址域作為返回地址出棧,繼續這樣下去,直到???,最終所得的n就是所要求得值。