首页 > 编程语言 > 详细

java 汉诺塔 递归算法

时间:2016-02-12 23:18:35      阅读:358      评论:0      收藏:0      [点我收藏+]

一、玩法

  1.有三根杆子A,B,C。A杆上有若干碟子  
  2.每次移动一块碟子,小的只能叠在大的上面  
  3.把所有碟子从A杆全部移到C杆上

二、解答思路 

这是一个典型的递归场景的应用

技术分享
 1 // n- 要移动的碟数 
 2 // a- 移动杆,b- 借助杆,c- 目标杆
 3 public static hanoi(int n,String a ,String b,String c) {
 4       if(n == 1) {
 5             System.out.println(a + "--->" + c);
 6       } else {
 7             hanoi(n-1,a,c,b);
 8             System.out.println(a + "--->" + c);
 9             hanoi(n-1,b,a,c);
10       }    
11 }
View Code

1、若A杆上只有一个碟子,直接移动到C

if(n==1) {
    System.out.println(a + ‘--->‘ + c);      
}

2、若A杆上碟子数为n(n>1),分“三步走”

  2.1、将A杆上n-1个碟子借助C移动到B

hanoi(n-1,a,c,b)

  2.2、将A杆上最后一个移动到C

System.out.println(a + "--->" + c)

  2.3、将B杆上的n-1个碟借助A移动到C

hanoi(n-1,b,a,c)

 

  

 

java 汉诺塔 递归算法

原文:http://www.cnblogs.com/jason-peggy/p/5187317.html

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