用栈替代递归:汉诺塔问题
古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子 ,盘子大小不等,大的在下,小的在上(如图)。有一个和尚 想把这64个盘子从A座移到B座,但每次只能允许移动一个盘子 ,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘 在上。在移动过程中可以利用B座,要求输出移动的步骤。
汉诺塔问题递归解法:
汉诺塔问题递归解法:
汉诺塔问题手工解法(三个盘子):
汉诺塔问题非递归解法:
编译器生成的代码自动维护一个问题的栈,相当于信封 堆。栈里每个子问题的描述中多了一项 --- 返回地址,返 回地址可以描述该子问题已经解决到哪个步骤了,下面 的(0) (1),(2),(3)就是返回地址。
汉诺塔问题递归解法:
汉诺塔问题递归解法:
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.