1. 程式人生 > >課後作業2:遞歸編程解決漢諾塔問題

課後作業2:遞歸編程解決漢諾塔問題

args 漢諾塔問題 char ext n) 兩個 port one input

【程序設計思想】

將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:遞歸編程解決漢諾塔問題