有以下程序#include <stdio.h>void f(int x[], int n){ if ( n > 1) { printf("%d,", x[0]); f(&x[1], n-1); printf("%d,", x[0]); } else printf("%d,", x[0]);}main( ){ int z[3] = {4, 5, 6}; f(z, 3); printf("\n"); }程序运行后的输出结果是A) 6,5,4,6,5,4,B) 4,5,6,5,4,C) 4,5,6,4,5,6,D) 6,5,4,5,6,谁能解释一下程序怎么运行的,我不能理解这里的递归
3 回答
三十二应遍尘刹
TA贡献22条经验 获得超7个赞
void f(int x[], int n)
{ if ( n > 1)
{ printf("%d,", x[0]);
f(&x[1], n-1);
printf("%d,", x[0]);
}
你应该是f(&x[1],n-1);这里的递归调用有疑惑吧,其实数组在内存中是以指针的形式存在的,int x[],数组名x代表了它的首地址,&是取地址符,&x[1],就是这个数组中第二个元素的地址,依次类推!如果这个你知道那也没啥难得了吧,如果看不懂,请你看一看数组与指针的关系就行了
asd8532
TA贡献143条经验 获得超187个赞
传4,5,6和3进去输出x[0]和x[0],两个x[0]中间调用递归,所以两个4中间有一些输出输出4.。。。。。4
传5,6和2进去输出x[0]和x[0],两个x[0]中间调用递归,所以两个5中间有一些输出4 5.。。。5 4
6和1进去,直接输出6然后退出4 5 6 5 4
- 3 回答
- 0 关注
- 2122 浏览
添加回答
举报
0/150
提交
取消