首页 > 其他 > 详细

递归-Hanio塔问题

时间:2014-04-08 13:21:32      阅读:490      评论:0      收藏:0      [点我收藏+]

直接或间接地调用自身的算法称为递归算法。用函数自身给出定义的函数称为递归函数。

简单的算法:假设塔座a、b、c排成一个三角形,a-b-c-a构成顺时针循环,在移动圆盘的过程中,若是奇数次移动,则将最小的圆盘移动到顺时针方向的下一个塔座上;若是偶数次移动,则保持最小的圆盘不动,而在其他两个塔座之间,将较小的圆盘移动到另一个塔座上去。

使用递归算法实现如下

bubuko.com,布布扣
1 void hanoi (int n,int a ,int b, intc)
2 {
3   if(n>0){
4 hanoi(n-1,a,c,b);
5 move(a,b);
6 hanoi(n-1,c,b,a);
7 }  
8 }
bubuko.com,布布扣

hanoi(n,a,b,c)表示将塔座a上自下而上,由大到小叠放在一起的个圆盘依移动规则移至塔座b上并按同样的顺序叠放。在移动的过程中,以塔座c作为辅助塔座。move(a,b)表示将塔座a上编号为n的圆盘移至塔座b上。

递归-Hanio塔问题,布布扣,bubuko.com

递归-Hanio塔问题

原文:http://www.cnblogs.com/hans-boos/p/3650953.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!