ハノイの塔3(移動元と異動先だけ指定)

プログラムをわかりやすくすることに、意味があるか?

ファイル名 Hanoi3.java

public class Hanoi3 { 
   public static void main( String[] args ) {
      idou(4,'A','C');
   } 

   public static void idou(int n,char src,char dst){
       /*
       ここに
       src と dst に使っていない場所を
       tmp とするプログラムを書く
      */
      if (n > 0){
         idou(n-1,src,tmp);
         System.out.println ( src + " から " + dst + " へ移動" );
         idou(n-1,tmp,dst);
      }
   } 
}

解説

String の比較が equals を使うなど面倒なので、基本変数である char を使っているこれなら普通に、src=='A' などとやってよい。

src は source つまり源。dst は destination つまり目的地。tmp は temporary 一時雇いのつもり。もちろん自分にわかりやすい名前にしてもよい。

使うかも知れない手法

&&
かつ: if(src=='A' && dst=='B') もし、srcがAでなおかつdstがBなら
||
または: if(src=='A' || dst=='A') もし、srcがAであるかまたはdstがAなら

if の用法

if(a==2){
   System.out.println("aは2だよ");
}
else{
   System.out.println("aは2でないよ");
}

else以下は必要なければ書かなくてよい

if(a==2){
   System.out.println("aは2だよ");
}

{  } の中の文が一つの時は {  } を省略してよい。

if(a==2) System.out.println("aは2だよ");

数を数えよう

ファイル名 Hanoi32.java

何回でできたか報告させる

もくじ

聖愛中学高等学校
http://www.seiai.ed.jp/
Last Modified