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

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

好人一生平安

如果改成n-1為什么會有亂碼 這個是有順序的嗎 改成n-1是不是 只能算10天以后的http://img1.sycdn.imooc.com//5857d1cd0001339203990360.jpg

正在回答

2 回答

程序運行從主函數開始,然后開始執行 ?int num = getPeachNumber(1); ?這里調用getPeachNumber(int n) 函數,并把實參1傳遞給形參n 。在getPeachNumber(1)函數內部,n=1,if為假,就去執行num=(getPeachNumber(n-1)-1)/2 ,這里會先計算getPeachNumber(0)[n=1,n-1=0]的值,減一后除2再賦值給num,但是程序不是到getPeachNumber(0)的值(不是遞歸終止條件),就會再次調用getPeachNumber(int n),這一次把n=0,判斷if為假,進入else去執行num=(getPeachNumber(-1)-1)/2 ;這里再次調用getPeachNumber(-1),重復上面過程,調用getPeachNumber(-2),不斷往復,最后是死循環,程序崩潰。

提示:程序遞歸一定要有終止條件,而且程序終止程序要能實現, 剛才這個例子,遞歸是n==10,程序從n==1開始,并且n朝著負方向發展,遞歸終止無法達到,形成死循環。 全面寫也可以在getPeachNumber(int n)中加上一條:

if(n==10)

? ? {

? ? ? ?? ? ? ? //遞歸結束條件

? ? }?

else if(n<1&&n>10) ? ? ? ? ? ? ? //這里發范圍與實際結合的,不該有0次,超過十次,桃子吃完了。

{ ? ?printf("提示錯誤語句";? ? ? ? //自己編輯錯誤提示

? ? return 0;

}

?else ?if

? ? {

? ? ? ? num = getPeachNumber(n+1)*2+2; ? //這里是不應該用遞歸呢?

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

? ? }


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

德國一個夏天的童話 提問者

非常感謝!
2017-02-07 回復 有任何疑惑可以回復我~

要求就是按照打印順序輸出啊 ?

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

舉報

0/150
提交
取消
C語言入門
  • 參與學習       926904    人
  • 解答問題       21532    個

C語言入門視頻教程,帶你進入編程世界的必修課-C語言

進入課程

好人一生平安

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

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

幫助反饋 APP下載

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

公眾號

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