【发布时间】:2018-05-01 14:09:06
【问题描述】:
#include <stdio.h>
int x=2,y=4,z=17,w=3,count=0;
void p(int z,int *x){
*x= 3*z - *x;
int w=*x+z;
printf("%d %d %d %d \n",*x,y,z,w);
if(*x<=y){
p(*x+1,&w);
printf("%d %d %d %d \n",*x,y,z,w);
}
}
int main(void){
p(1,&x);
printf("%d %d %d %d \n",x,y,z,w);
return 0;
}
我尝试手动运行此代码以获取输出,但我手动生成的结果与我编译和执行它时的输出不同。 谁能详细解释一下程序的输出是如何创建的?
应该给出的输出是
1 4 1 2
4 4 2 6
9 4 5 14
4 4 2 9
1 4 1 4
1 4 17 3
【问题讨论】:
-
手工得到什么结果?
-
这是一个写得很糟糕的递归,很难理解。除了迷惑别人,它还有其他目的吗?
-
我手动得到 1 4 1 2 \ 4 4 2 6 \ 9 4 5 14 。之后我不知道如何继续。这是考试中的练习。
-
你可以用你的调试器来看看你的代码在做什么......
标签: c function pointers recursion