主题:数组与参数传递问题
#include<stdio.h>
#include<stdlib.h>
int f(int a[],int n)
{if(n>1) return a[0]+f(&a[1],n-1);
else return a[0];}
main()
{
int aa[3]={1,2,3},s;
s=f(&aa[0],3);
printf("%d\n",s);
system("pause");
return 0;
}
结果为什么是6,我得出的结果总是3;
想问一下这题的详细解题步骤;
我的步骤是:先运行第九行,主程序中的调用F函数,由于实际参数n值是3,故执行定义函数中的语句,即条件成立语句,之后n值减1,再重复运行,直到n值为1时执行else语句,此时s=a[0]+a[0]+a[0],三个a[0]的值怎么会得出6呢??郁闷中
#include<stdlib.h>
int f(int a[],int n)
{if(n>1) return a[0]+f(&a[1],n-1);
else return a[0];}
main()
{
int aa[3]={1,2,3},s;
s=f(&aa[0],3);
printf("%d\n",s);
system("pause");
return 0;
}
结果为什么是6,我得出的结果总是3;
想问一下这题的详细解题步骤;
我的步骤是:先运行第九行,主程序中的调用F函数,由于实际参数n值是3,故执行定义函数中的语句,即条件成立语句,之后n值减1,再重复运行,直到n值为1时执行else语句,此时s=a[0]+a[0]+a[0],三个a[0]的值怎么会得出6呢??郁闷中