int f(int a[ ],int n){ if(n>1) return a[0]+f(&a[1],n-1);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); } 求详解,没明白f(&a[1],n-1)是怎么回事

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/24 21:33:36
intf(inta[],intn){if(n>1)returna[0]+f(&a[1],n-1);intf(inta[],intn){if(n>1)returna[0]+f(&a[1],n-1);el

int f(int a[ ],int n){ if(n>1) return a[0]+f(&a[1],n-1);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); } 求详解,没明白f(&a[1],n-1)是怎么回事
int f(int a[ ],int n){ if(n>1) return a[0]+f(&a[1],n-1);
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); } 求详解,没明白f(&a[1],n-1)是怎么回事

int f(int a[ ],int n){ if(n>1) return a[0]+f(&a[1],n-1);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); } 求详解,没明白f(&a[1],n-1)是怎么回事
aa:(1,2,3) s=f(&1,3); 在计算时:3>1 返回 1+f(&2,2) f(&2, 2):2还是大于1,就返回2+f(&3,1); f(&3,1):1不大于1了,所以就返回a[0],也就是3. f(&3,1)=3,那么f(&2,2)=2+3=5,f(&1, 3)=1+f(&2,2)=1+5=6 上面我写的&1,&2,&3语法是不对的,只是让你参考用,&1代表指针指向数组aa里的数字1. 看来你还没学过递归吧.