|
发表于 2023-3-28 13:11:29
|
显示全部楼层
本帖最后由 myd0311 于 2023-3-28 13:13 编辑
- #include<stdio.h>
- int f(int a[],int n)
- {
- if (n>1) return a[0]+f(&a[1],n-1);
- else return a[0];
- }
- int main()
- {
- int aa[3]={1,2,3,},s;
- s=f(&aa[0],3);
- printf("%d\n",s);
- return 0;
- }
复制代码
不能像楼上说的那么仔细,但是我们可以模拟一下:
第 0 层(f),此时参数 a 为 {1, 2, 3},n = 3,计算 f(&a[1],n-1) 的值
第 1 层(f),此时参数 a 为 {2, 3},n = 2,计算 f(&a[1],n-1) 的值
第 2 层(f),此时参数 a 为 {3},n = 1,n > 1 不成立,返回 3
第 1 层(f),f(&a[1],n-1)已返回为 3,+ a[0](2) 就是 5
第 0 层(f),f(&a[1],n-1)已返回为 5,+ a[0](1) 就是 6
返回 main,复制给 s,输出 |
|