私は現在、関数の再帰がどこでも使用されているいくつかの分割統治アルゴリズムをプログラミングしていますが、それがどのように機能するかが非常に漠然としているか、正確にはわかりません。そのため、ここに投稿し、基本的すぎることを気にしないでください。
たとえば、次のコードがあるとします。
#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 に再度出力されるのはなぜですか? 関数再帰は1回の再帰のためにスタックに格納され、「底」に達すると削除する必要があるためだと聞きました。
しかし、とにかく、私はそれについて知りません。それで、誰かが私を助けて、ここで何が起こったのか、関数呼び出しの正確な流れを明確に教えてもらえますか?
ご協力いただきありがとうございます!