[問題] 遞迴函式的問題

看板C_and_CPP (C/C++)作者 (小宗宗19)時間14年前 (2012/03/11 00:16), 編輯推噓3(308)
留言11則, 7人參與, 最新討論串1/2 (看更多)
小弟我是初學者, 跟著書本練習時, 遇到這問題一直想不透 #include<stdio.h> #include<stdlib.h> long fibonacci(long); int main(){ long n, ans; printf("Enter a number(n>=0): "); scanf("%1d",&n); if(n<0){ printf("Number must be>0\n"); }else{ ans = fibonacci(n); printf("fibonacci(%1d) = %1d\n",n,ans); } system("pause"); return 0; } long fibonacci(long n){ int a; if(n==0){ return 0; }else if(n==1){ return 1; }else{ a = fibonacci(n-1)+fibonacci(n-2); printf("%d\n",a); return a; } } 我輸入4時, 1 2 1 3 fibonacci(4) = 3 為何會是這樣呢??? 感謝大家替我解答!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.194.56

03/11 00:25, , 1F
你同時把 n 印出來會比較好研究為什麼
03/11 00:25, 1F

03/11 00:26, , 2F
如果花了好幾天都看不懂,那可以暫時先跳過去XD
03/11 00:26, 2F

03/11 00:28, , 3F
你認為應該怎樣
03/11 00:28, 3F

03/11 00:38, , 4F
沒錯阿... F(4)的確要等於3阿...
03/11 00:38, 4F

03/11 06:32, , 5F
由前往後call,由後往前print
03/11 06:32, 5F

03/11 15:57, , 6F
所以問題是怎樣?
03/11 15:57, 6F

03/11 23:33, , 7F
可以說明一下是怎麼呼叫的,謝謝!!!
03/11 23:33, 7F

03/11 23:34, , 8F
你先照一樓的建議把N印出來試試
03/11 23:34, 8F

03/11 23:34, , 9F
為何最後是出現3?
03/11 23:34, 9F

03/11 23:38, , 10F
我回覆文章了
03/11 23:38, 10F

03/13 11:52, , 11F
謝謝唷!
03/13 11:52, 11F
文章代碼(AID): #1FMtv524 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1FMtv524 (C_and_CPP)