gpt4 book ai didi

c - 递归控制流程

转载 作者:太空宇宙 更新时间:2023-11-03 23:24:26 24 4
gpt4 key购买 nike

#include<stdio.h>

void printd(int n)
{
if(n/10)
printd(n/10);
putchar(n%10+'0');
}

在上面的代码中,将 n 视为一个正整数其值为 123。

第一次,123传给printd(first printd)第二次,12传给了printd(second printd)第三次,1传给printd(第三次printd)putchar打印1

然后控制流到第二个printd后,n的值是多少?因为它是一个自动变量,一旦函数结束,它在第三个 printd 中的值 1 就会消失,并在第二个 printd 中获得值 12。

如果是这样,第二个 printd 将再次导致第三个 printd 等等......

但是程序漂亮地打印了 123。

我在函数调用期间对控制流和变量值的理解哪里出错了?

仅供引用,该程序来自 K&R 第 4.10 节递归

最佳答案

你错了:

If so,second printd will again lead to third printd

第二个 printd 从它停止的地方开始,而不是从函数 printd 的开始。因此,putchar 在第二个打印 2 的 printd 中执行,同样的事情发生在第一个 printd 中,打印 3。

关于c - 递归控制流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30589132/

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