程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java應用遞歸法處理漢諾塔成績的代碼示例

Java應用遞歸法處理漢諾塔成績的代碼示例

編輯:關於JAVA

Java應用遞歸法處理漢諾塔成績的代碼示例。本站提示廣大學習愛好者:(Java應用遞歸法處理漢諾塔成績的代碼示例)文章只能為提供參考,不一定能成為您想要的結果。以下是Java應用遞歸法處理漢諾塔成績的代碼示例正文


漢諾(Hanoi)塔成績:現代有一個梵塔,塔內有三個座A、B、C,A座上有n個盤子,盤子年夜小不等,年夜的鄙人,小的在上(如圖)。

有一個僧人想把這n個盤子從A座移到B座,但每次只能許可挪動一個盤子,而且在挪動進程中,3個座上的盤子一直堅持年夜盤鄙人,小盤在上。在挪動進程中可以應用B座,請求打印挪動的步調。假如只要一個盤子,則不須要應用B座,直接將盤子從A挪動到C。

  • 假如有2個盤子,可以先將盤子1上的盤子2挪動到B;將盤子1挪動到c;將盤子2挪動到c。這解釋了:可以借助B將2個盤子從A挪動到C,固然,也能夠借助C將2個盤子從A挪動到B。
  • 假如有3個盤子,那末依據2個盤子的結論,可以借助c將盤子1上的兩個盤子從A挪動到B;將盤子1從A挪動到C,A釀成空座;借助A座,將B上的兩個盤子挪動到C。這解釋:可以借助一個空座,將3個盤子從一個座挪動到另外一個。
  • 假如有4個盤子,那末起首借助空座C,將盤子1上的三個盤子從A挪動到B;將盤子1挪動到C,A釀成空座;借助空座A,將B座上的三個盤子挪動到C。

Java代碼以下:

public class Hanoi { 
  
 public static void main(String[] args) { 
  int disk = 3; //盤子 
  move(disk, 'A', 'B', 'C'); 
 } 
  
 /* 
  * 依據題意,從上向下編號 => 1 ~ n 
  */ 
 /** 
  * 
  * @param topN 源塔頂的盤子編號 
  * @param from 從哪一個塔挪動 
  * @param inter 中介,過渡的塔 
  * @param to 目標塔 
  */ 
 private static void move(int topN, char from, char inter, char to) { 
  if (topN == 1) { 
   System.out.println("Disk 1 from " + from + " to " + to); 
  } else { 
   move(topN - 1, from, to, inter); 
   System.out.println("Disk " + topN + " from " + from + " to " + to); 
   move(topN - 1, inter, from, to); 
  } 
 } 
   
} 

out

Disk 1 from A to C 
Disk 2 from A to B 
Disk 1 from C to B 
Disk 3 from A to C 
Disk 1 from B to A 
Disk 2 from B to C 
Disk 1 from A to C 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved