當前位置:編程學習大全網 - 編程軟體 - JAVA 經典編程題,怎麽寫?

JAVA 經典編程題,怎麽寫?

利用java中遞歸方法,代碼如下(註意,該代碼在測試運行時請將類命名為Hanio與代碼中壹致,該代碼包含了移動步驟,請不要輕易嘗試64等大數字的移動步驟,如果需要請將代碼中輸出具體步驟的代碼 System.out.println("move " + a + " to " + b);刪除保留輸出次數的代碼)

package onlyDemo;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class Hanio {

public static void main(String args[]) throws IOException {

//輸入盤子數

System.out.println("請輸入盤子數:");

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

String p=br.readLine();

byte q=Byte.parseByte(p);

//壹***有n個盤子

byte n = q;

// 定義三個桿子的名稱

char a = 'A', b = 'B', c = 'C';

// 調用漢諾塔執行函數

hanio(n, a, b, c);

System.out.println("需要 "+ i +" 次移動");

}

static long i=0;

public static void hanio(byte n, char a, char b, char c) {

if (n == 1) { //如果只有壹個盤子則直接把盤子從a 移到b

System.out.println("move " + a + " to " + b);

i++;

}

else { //超過壹個盤子的情況

hanio( (byte) (n - 1), a, c, b); //將a桿上n-1個盤子借助於b先移到c桿

System.out.println("move " + a + " to " + b); //將a桿上第n個盤子從a移到b桿

i++;

hanio( (byte) (n - 1), c, b, a); //將c桿上n-1個盤子借助a移到b桿

}

}

}

  • 上一篇:誰能用VB幫我寫個這個計算公式代碼
  • 下一篇:pdf編輯器怎麽編輯pdf文件?求pdf編輯器編輯文件詳細教程
  • copyright 2024編程學習大全網