综合百科

栈的基本运算

递归的本质就是调用系统栈,存着上一次的函数状态,开辟新的栈空间,直到有返回值,从栈顶向下递推。

比如对于汉诺塔的递归实现:

可以知道其实每次调用函数都储存了当前左边的层数这一状态,并且需要先求解下一次操作后才能接着运算。

于是我们建立一个栈,将待处理操作存入栈中,最后到n==1时依次弹出,这时的顺序刚好满足我们后续的求解。