[問題] 關於遞迴呼叫

看板C_and_CPP作者 (PT鄉民)時間13年前 (2012/02/28 18:20), 編輯推噓3(301)
留言4則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 程式碼(Code): #include <stdio.h> #include <stdlib.h> float rsum(float a[], int n); /*遞迴地求算陣列元素總和*/ int main() { float a[100]; int i, n; printf("Input number: "); /*要求使用者輸入n個numbers */ scanf("%d",&n); for (i=1;i<=n;i++) /*輸入n個numbers */ scanf("%f",&a[i]); printf("Sum=%f \n", rsum(a,n)); /*輸出結果*/ system ("pause"); return 0; } float rsum(float a[], int n) { /*遞迴地求算陣列元素總和*/ if (n) return rsum(a, n-1) + a[n]; return a[0]; /*遞迴地求剩下解*/ } 預期的正確結果(Expected Output): 答案結果是正確的計算陣列總和 但是我要知道函式呼叫後是呼叫Array內以輸入的值? 還是null阿 因為我把printf加在函式一近來if(n)前面 顯示都是null 這是錯的嗎?? 沒有預期說Array內的值 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.229.184

02/28 18:27, , 1F
怎麼印的 ? 另外 return a[0]; 好像怪怪的, a[0] 沒定義過
02/28 18:27, 1F

02/28 19:12, , 2F
i=1開始,哪來的印出a[0]值,輸入超過100,陣列就爆了
02/28 19:12, 2F

02/28 19:55, , 3F
你的函數跑n+1次 但值卻只有n個
02/28 19:55, 3F

02/28 21:39, , 4F
我加這行跑起來沒問題@@printf(" a[%d] = %f\n",n,a[n]);
02/28 21:39, 4F
文章代碼(AID): #1FJAfvQr (C_and_CPP)