Chinaunix首页 | 论坛 | 博客
  • 博客访问: 601140
  • 博文数量: 129
  • 博客积分: 8026
  • 博客等级: 中将
  • 技术积分: 1300
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-21 14:39
文章分类

全部博文(129)

文章存档

2011年(1)

2007年(26)

2006年(102)

我的朋友

分类:

2006-07-17 10:04:55

汉诺塔是一个有趣的智力游戏,在程序的观点中,它的解题方法是一个典形的递归:
 
假设有n个塔,要从A柱移到B柱,移的过程中,每次只能移动一个塔,大塔不能在小塔上,可以借助C柱,递归过程序如下:
1)把n-1个塔从A移到C
2)把剩下一个由A移到B
3)把n-1个由C移到B,完成
 
这其中,每一步操作都是递归,php的解法如下:
 
function hanoi($n,$x,$y,$z){
    if(
$n == 1printf("从 %s 移到 %s 
"
,$x$y
);
    else{
        
hanoi($n-1,$x,$z,$y
);
        
hanoi(1,$x,$y,$z
);
        
hanoi($n-1,$z,$y,$x
);
    }
}
 
例如:hanoi(4,'A','B','C')表示有四个塔,要从A柱移到B柱,结果是:
 
从 A 移到 C
从 A 移到 B
从 C 移到 B
从 A 移到 C
从 B 移到 A
从 B 移到 C
从 A 移到 C
从 A 移到 B
从 C 移到 B
从 C 移到 A
从 B 移到 A
从 C 移到 B
从 A 移到 C
从 A 移到 B
从 C 移到 B
阅读(1157) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~