return a[0]+f(a+1,n-1);求解答

2024-12-01 08:43:06
推荐回答(1个)
回答(1):

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