int f(int a[ ],int n){ if(n>1) return a[0]+f(&a[1],n-1);

2025-03-01 19:40:56
推荐回答(2个)
回答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。

看来你还没学过递归吧。

回答2:

数组作为参数是按址传递,因此f(&a[1],n-1)就是把数组第二个元素的地址传递给函数形参,则形参数组的长度一次递减直至剩一个元素