作者APE36 (PT鄉民)
看板C_and_CPP
標題[問題] 關於遞迴呼叫
時間Tue Feb 28 18:20:38 2012
開發平台(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
推 ledia:怎麼印的 ? 另外 return a[0]; 好像怪怪的, a[0] 沒定義過 02/28 18:27
→ deh3215:i=1開始,哪來的印出a[0]值,輸入超過100,陣列就爆了 02/28 19:12
推 Yshuan:你的函數跑n+1次 但值卻只有n個 02/28 19:55
推 HowLeeHi:我加這行跑起來沒問題@@printf(" a[%d] = %f\n",n,a[n]); 02/28 21:39