gpt4 book ai didi

c - 我该如何解决以下代码?

转载 作者:行者123 更新时间:2023-11-30 20:57:12 26 4
gpt4 key购买 nike

Possible Duplicate:
What is recursion really and explain the output of this program?
What is really happening in this code?

我有一个我不明白的递归函数。我什至不知道代码是否有效:

int count(int x) // suppose x is 3
{
if(x>0)
{
count(--x);
printf(x);
count(--x); // control reaches here or not?
}
}

这只是伪代码。取初始变量为3。请结合上下文解释栈的概念。这段代码让我困惑了好几天,我无法真正找到这段代码的答案。

最佳答案

好吧,只是因为我需要唤醒我的大脑:-)

count(3) 将进入该函数并调用 count(2)(第 2 级)。
count(2) 将进入该函数并调用 count(1)(第 3 级)。
count(1) 将进入该函数并调用 count(0)(第 4 级)。
count(0) 将进入该函数,但由于 x>0 为 false,因此它不会执行任何操作,只是返回到 x 的第 4:th 级别 仍然是 0。

第4级将输出0,并调用count(-1)(第5级)

count(-1) 将进入该函数,但由于 x>0 为 false,因此它不会执行任何操作,只是返回到第 4 层: x 仍然是 -1。
4:th 级别返回到 3:rd 级别,其中 x 仍为 1。

3:rd 级别将输出 1 并调用 count(0) (4:th 级别)

count(0) 将进入该函数,但由于 x>0 为 false,因此它不会执行任何操作,只是返回到 3:rd 级别,其中 x仍然是0。
3:rd 级别返回到 2:nd 级别,其中 x 仍为 2。

2:nd level 将输出 2 并调用 count(1) (3:rd level)

count(1) 将进入函数并调用 count(0)(第 4 级)。
count(0) 将进入该函数,但由于 x>0 为 false,因此它不会执行任何操作,只是返回到 x 的第 3:rd 级别 仍然是 0。

3:rd 级别将输出 0 并调用 count(-1) (4:th 级别)

count(-1) 将进入该函数,但由于 x>0 为 false,因此它不会执行任何操作,只会返回到 3:rd 级别,其中x仍然是-1。

3:rd 级别返回到 2:nd 级别,其中 x 仍为 1。
2:nd 级别返回到 1:st 级别,我们就完成了。

输出为0 1 2 0

我建议如果你真的想理解这一点,请自己尝试一下 count(4)。

关于c - 我该如何解决以下代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12306075/

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