課後作業2:遞歸編程解決漢諾塔問題
【程序設計思想】
將A座上盤子移到C座上,實現的操作:1,將A座上除最下面其余盤子移到B座上2,將A座上一個盤子移到C座上3,將B座上盤子移到C座上。
分別用兩個函數實現兩類操作,用hanio函數實現第一類操作,用move函數實現第2類操作,函數調用hanio(n,one,two,three)表示將n個盤子從“one”座移到“three”座的過程。函數調用move(x,y)表示將一個盤子從x座移到y座的過程。
【程序流程圖】
【源代碼】
//那穎 信1605-2班 20163448
import java.util.Scanner;
public class Hanoi
{
public static void main(String[] args)
{
System.out.println("please input m:");
Scanner input=new Scanner(System.in);
int m=input.nextInt();
hanio(m,‘A‘,‘B‘,‘C‘);
}
public static void move(char x,char y)
{
System.out.println(x+"->"+y);
}
public static void hanio(int n,char one,char two,char three)
{
if(n==1)
move(one,three);
else
{
hanio(n-1,one,three,two);
move(one,three);
hanio(n-1,two,one,three);
}
}
}
【運行結果截圖】
課後作業2:遞歸編程解決漢諾塔問題