首页 > 试题广场 >

有以下C语言程序 #include ...

[单选题]
有以下C语言程序
#include   <stdio.h>
int fun(int  x[], int  k) {  
    if(k==0) return (x[0]);
    return  x[0]+fun(x+1, k-1);
}
int main(){  
    int  x[ ]={1,2,3,4,5};
    printf("%d\n", fun(x,3));
}
程序运行后的输出结果是()
  • 3
  • 6
  • 10
  • 15
大概明白了,子函数新定义了一个数组,分别把数组的下一位作为这个新的数组的头地址。
发表于 2020-02-29 09:23:50 回复(0)
fun(x,3)
=x[0]+fun(x+1,2)
=x[0]+x[1]+fun(x+2,1)
=x[0]+x[1]+x[2]+fun(x+3,0)
=x[0]+x[1]+x[2]+x[3]
=10
发表于 2019-08-15 16:30:15 回复(2)
本题关键是要能看来里面的x的意思,这里x表示地址。x[] 表示数组,所以每次x+1都是地址+1所以,答案是有连续的四个地址组成,对应的是x[0]到x[3]之和
发表于 2021-02-02 21:23:38 回复(0)
求一个数组前K位的和,K从0开始
发表于 2019-10-16 08:51:58 回复(0)
好题
发表于 2023-02-19 10:04:37 回复(0)
fun(x,3)
=x[0]+fun(x+1,2)
=x[0]+x[1]+fun(x+2,1)
=x[0]+x[1]+x[2]+fun(x+3,0)
=x[0]+x[1]+x[2]+x[3]
=10
发表于 2022-05-06 18:27:00 回复(0)
1+1+2+1+2+3才对吧
发表于 2023-10-24 10:51:22 回复(0)
值得注意的是形参里的x[]应该理解为一个指针,不要理解为一个新的数组,数组名(数组首地址)+1是错的
发表于 2022-09-21 08:59:45 回复(0)
最后那个return x[0]没看到 只能怪我吓
发表于 2022-01-06 19:04:04 回复(0)
学到了
发表于 2021-04-08 16:20:04 回复(0)