汉诺塔问题之前也介绍过了,不过总觉得理解不够深刻,今天看了清华的那版数据结构后,感觉还是有新的理解。书上的汉诺塔解法也是运用递归的方法,不过它介绍了系统是如何分配函数的运行控制权的。函数的调用其实在系统中也是放在栈中,后进先调用的思想。之前一直没理解好的原因,可能也是在于汉诺塔的解法两次用到递归,这样一层的函数会停留两次,所以容易混洗。
补充下,栈也是一种特殊的线性表,只是它只能对表尾(栈顶)进行插入和删除等操作,所以就形成的后进先出的模式。其次,函数运行时压入栈的有地址,参变量等信息。在调用完后会出栈,释放其空间。