这种递归是如何到达 COUT 语句的?



我有这个函数来解决河内塔问题,幸运的是它运行良好,但任何人都可以向我解释该函数是否在 cout 语句之前调用它 self 在 m!=0 的情况下,那么它如何到达 cout 语句甚至自身的另一个调用?

#include <iostream>
using namespace std;
void Hanoi(int m, char a, char b, char c){
if(m == 1){
cout << "Move disc " << m << " from " << a << " to " << c << endl;
}else{  
Hanoi(m-1, a,c,b);
cout << "Move disc " << m << " from " << a << " to " << c << endl;
Hanoi(m-1,b,a,c);
}
}
int main(){
int discs;
cout << "Enter the number of discs: " << endl;
cin >> discs;
Hanoi(discs, 'A', 'B', 'C');

return 0;
}

调用Hanoi(m),其中m > 1:首先它执行Hanoi(m-1)和所有结果调用。然后它执行cout.然后,它再次执行Hanoi(m-1)和所有生成的调用。

考虑m == 3

Hanoi(3)
Hanoi(2)
Hanoi(1)
cout
cout
Hanoi(1)
cout
cout
Hanoi(2)
Hanoi(1)
cout
cout
Hanoi(1)
cout

最新更新