int f(int a[],int n)
{ if(n>1)
return a[0]+f(a+1,n-1);
else
return a[0];
}
这是一个求和函数。
int aa[10] = {1,2,3,4,5,6,7,8,9,10}
f(aa+2,4) 意味着 计算aa[2]+aa[3]+aa[4]+aa[5] 也就是计算从aa[2]开始的后四个数的和。
好,请看。把函数的结果展开,就有。
ff(aa+2,4) = (aa+2)[0] + f(aa+2+1,3) = aa[2] + f(aa+3,3) ,这里的(aa+2)[0]代表以aa+2为首地址的0号元素。自然就是跟aa[2]一样的了。
依次类推,有
ff(aa+2,4) = aa[2] + f(aa+3,3) = aa[2] + aa[3] + f(aa+4,2) = aa[2] + aa[3] + aa[4] + f(aa+5,1)
= aa[2] + aa[3] + aa[4] + aa[5] = 3+4+5+6 = 18