我目前正在编写一些分治算法,其中到处都使用函数递归,但我有一个非常模糊的想法或不知道它是如何工作的,这就是我在这里发布它的原因,希望你不要介意它太基础了。
例如,如果我们有以下代码:
#include<iostream>
using namespace std;
void Recursion(int n)
{
cout << n << endl;
if(n > 0)
{
Recursion(n-1);
}
cout<<n<<endl;
}
int main()
{
Recursion(3);
return 0;
}
我测试了 Recursion(3) 并且终端中的打印输出是:
3
2
1
0
0
1
2
3
我可以理解函数递归调用的概念,但我不明白它的工作原理。比如不能再调用该函数后怎么办?例如,在这里,我可以理解它从 3 打印到 0,但为什么它又从 0 打印到 3?我听说这是因为函数递归存储在堆栈中进行一次递归,当它到达“底部”时,它也必须删除。
但无论如何,我对此一无所知。那么,任何人都可以帮助我并清楚地告诉我这里发生了什么以及函数调用的确切流程吗?
谢谢你的帮助!