a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 91|回复: 0

[基础知识] JAVA基础:汉诺塔递归算法的实现

[复制链接]
发表于 2012-8-4 12:37:27 | 显示全部楼层 |阅读模式
有三根柱子A,B,C,A柱子上有N个盘子,从小到大依次叠放,要求把A上的盘子都移到C上,B可以作为临时存放,移动的时候必须始终遵循小盘子在大盘子上面,且   每次只能移动一个盘子,求其算法。用java实现如下:
% Y" A2 \# P5 H9 a1 E+ `- h3 [  public class move{
- f5 l2 }0 z, E  public static void main(String [] args){
! l+ M3 H. O/ ^6 e  move(4,'a','c','b');6 c% }$ r" q7 m- p9 s/ [- I
  }( n0 {3 _. E6 f% y1 _1 N5 D
  //参数n表示移动count个盘子,src表示本来放盘子的,mid是临时存放盘子的,trag是最终目的
! h9 G! }5 ^+ ?* J  public static void move(int count,char src,char trag,char mid){9 U& _; h2 E6 P3 H$ x; j
  if(count==1){2 Y7 ]- v, c) U* p* d
  System.out.println(src+"--------->"+trag);
' T9 X, |! |' K- @: `% L! ~  }else{+ o9 r$ i: u3 [6 b1 V) C& M
  move(count-1,src,mid,trag);' D9 |, `2 o' N' \; q' P  L) r
  System.out.println(src+"--------->"+trag);2 C! a) t7 ]/ _/ u8 x# t
  move(count-1,mid,trag,src);3 M) f/ ~/ o. s' o$ M: u& c9 u
  }, }4 ]; L1 n; j. D
  }2 H, j2 n2 ~7 F' \7 V+ D' O
  }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-6 13:29 , Processed in 0.240280 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表