gpt4 book ai didi

c - C 中的指针递归

转载 作者:行者123 更新时间:2023-11-30 21:06:44 24 4
gpt4 key购买 nike

    #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

最佳答案

如果你想手动处理这个问题,你应该在纸上画一个堆栈,并在每次递归调用之前压入 x、y、z、w 的值,并在最后弹出它们。由于我们在该过程中有一个递归调用,因此我认为这很容易做到。

关于c - C 中的指针递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47356733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com