gpt4 book ai didi

c++ - 如果在指令之前调用递归函数怎么办?

转载 作者:太空宇宙 更新时间:2023-11-04 15:01:26 25 4
gpt4 key购买 nike

int i = 1;

void myFunction(int counter) {

if (counter == 0) {
return;
} else {
myFunction(--counter);
cout << i << " : " << counter << endl;
i++;
return;
}
}

我用

运行程序
myFunction(4)

此代码在控制台中显示以下内容:

1 : 0
2 : 1
3 : 2
4 : 3

我不明白递归在这里是如何工作的。如果对函数的调用是在指令之后完成的,那么它对我来说非常清楚,但不是之前!

我最困惑的是为什么程序在这里向上计数。如果有人能向我解释这个程序的机制,我将不胜感激。

最佳答案

我建议稍微简化代码以了解发生了什么:

void myFunction(int counter) {
cout << "Started function with " << counter << "." << endl;
if(counter == 0) {
cout << "Found a 0, returning." << endl;
return;
} else {
cout << "Before recursive call." << endl;
myFunction(--counter);
cout << "After recursive call." << endl;
}
}

myFunction(1);

你应该看到这个输出:

Started function with 1.
Before recursive call.
Started function with 0.
Found a 0, returning.
After recursive call.

如果这对您有意义,请尝试增加您最初传入的数字,您应该能够拼凑出原始代码中发生的事情。

关于c++ - 如果在指令之前调用递归函数怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38298970/

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