ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Java質問&情報提供サイトコミュのHanoiのプログラミング

  • mixiチェック
  • このエントリーをはてなブックマークに追加
start,target,medには塔の名前("A","B","C"のどれか),変数numberには円盤の枚数がきます。

一般に円盤の数がn枚のときにも正しく移動する方法を解答するプログラムを書きなさい、とゆー問題なのですが・・・

public class Hanoi{
public static String hanoi(int number, String start, String target, String med){
if(number==1){
return(start+"=>"+target);
}else if(number>1){
String a="";
for(int i=0;i<(number-1);i++){
s+=hanoi(1,start,med,target)+",";
}
s+=start+"=>"+target;
for(int i=0;i<(number-1);i++){
a+=","+hanoi(1,med,target,start);
}
return a;
}else return("");
}

public static void main(String[] args){
try{
int piece=Integer.parseInt(args[0]);
System.out.println(hanoi(piece,"A","B","C"));
}catch(ArrayIndexOutOfBoundsException e){
System.out.println(e);
}catch(NumberFormatException e){
System.out.println(e);
}
}
}


このようにすると、上に大きな円盤がのることもあります。どんな時でも、上にのるのは小さな円盤であるようにするにはどうすればよいでしょうか?

ちなみに
>java Hanoi 3
>java Hanoi 4
で調べる問題です。

コメント(2)

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Java質問&情報提供サイト 更新情報

Java質問&情報提供サイトのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング