欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java使用遞歸法解決漢諾塔問題的代碼示例

 更新時(shí)間:2016年04月19日 08:42:58   投稿:goldensun  
這篇文章主要介紹了Java使用遞歸法解決漢諾塔問題的代碼示例,漢諾塔問題是使用遞歸解決問題的經(jīng)典范例,用到的算法非常簡(jiǎn)單,需要的朋友可以參考下

漢諾(Hanoi)塔問題:古代有一個(gè)梵塔,塔內(nèi)有三個(gè)座A、B、C,A座上有n個(gè)盤子,盤子大小不等,大的在下,小的在上(如圖)。

201641984628317.jpg (586×209)

有一個(gè)和尚想把這n個(gè)盤子從A座移到B座,但每次只能允許移動(dòng)一個(gè)盤子,并且在移動(dòng)過程中,3個(gè)座上的盤子始終保持大盤在下,小盤在上。在移動(dòng)過程中可以利用B座,要求打印移動(dòng)的步驟。如果只有一個(gè)盤子,則不需要利用B座,直接將盤子從A移動(dòng)到C。

  • 如果有2個(gè)盤子,可以先將盤子1上的盤子2移動(dòng)到B;將盤子1移動(dòng)到c;將盤子2移動(dòng)到c。這說明了:可以借助B將2個(gè)盤子從A移動(dòng)到C,當(dāng)然,也可以借助C將2個(gè)盤子從A移動(dòng)到B。
  • 如果有3個(gè)盤子,那么根據(jù)2個(gè)盤子的結(jié)論,可以借助c將盤子1上的兩個(gè)盤子從A移動(dòng)到B;將盤子1從A移動(dòng)到C,A變成空座;借助A座,將B上的兩個(gè)盤子移動(dòng)到C。這說明:可以借助一個(gè)空座,將3個(gè)盤子從一個(gè)座移動(dòng)到另一個(gè)。
  • 如果有4個(gè)盤子,那么首先借助空座C,將盤子1上的三個(gè)盤子從A移動(dòng)到B;將盤子1移動(dòng)到C,A變成空座;借助空座A,將B座上的三個(gè)盤子移動(dòng)到C。

Java代碼如下:

public class Hanoi { 
  
 public static void main(String[] args) { 
  int disk = 3; //盤子 
  move(disk, 'A', 'B', 'C'); 
 } 
  
 /* 
  * 根據(jù)題意,從上向下編號(hào) => 1 ~ n 
  */ 
 /** 
  * 
  * @param topN 源塔頂?shù)谋P子編號(hào) 
  * @param from 從哪個(gè)塔移動(dòng) 
  * @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 

相關(guān)文章

  • SpringBoot應(yīng)用部署到Tomcat中無(wú)法啟動(dòng)的解決方法

    SpringBoot應(yīng)用部署到Tomcat中無(wú)法啟動(dòng)的解決方法

    這篇文章主要介紹了SpringBoot應(yīng)用部署到Tomcat中無(wú)法啟動(dòng)的解決方法,需要的朋友可以參考下
    2017-09-09
  • Java 常用類解析:java異常機(jī)制,異常棧,異常處理方式,異常鏈,異常丟失詳解

    Java 常用類解析:java異常機(jī)制,異常棧,異常處理方式,異常鏈,異常丟失詳解

    這篇文章主要介紹了Java 常用類解析:java異常機(jī)制,異常棧,異常處理方式,異常鏈,異常丟失詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Java如何使用spire進(jìn)行word文檔的替換詳解

    Java如何使用spire進(jìn)行word文檔的替換詳解

    創(chuàng)作一份文案經(jīng)常會(huì)高頻率地使用某些詞匯,如地名、人名、人物職位等,若表述有誤,就需要整體撤換,下面這篇文章主要給大家介紹了關(guān)于Java如何使用spire進(jìn)行word文檔的替換的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • SpringBoot實(shí)現(xiàn)定時(shí)發(fā)送郵件的三種方法案例詳解

    SpringBoot實(shí)現(xiàn)定時(shí)發(fā)送郵件的三種方法案例詳解

    這篇文章主要介紹了SpringBoot三種方法實(shí)現(xiàn)定時(shí)發(fā)送郵件的案例,Spring框架的定時(shí)任務(wù)調(diào)度功能支持配置和注解兩種方式Spring?Boot在Spring框架的基礎(chǔ)上實(shí)現(xiàn)了繼承,并對(duì)其中基于注解方式的定時(shí)任務(wù)實(shí)現(xiàn)了非常好的支持,本文給大家詳細(xì)講解,需要的朋友可以參考下
    2023-03-03
  • java獲取兩個(gè)List集合的交集代碼示例

    java獲取兩個(gè)List集合的交集代碼示例

    這篇文章主要給大家介紹了關(guān)于java獲取兩個(gè)List集合交集的相關(guān)資料,我們可以使用Stream操作來對(duì)集合進(jìn)行一系列的操作,其中包括求交集,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之學(xué)生管理系統(tǒng)的實(shí)現(xiàn)

    Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之學(xué)生管理系統(tǒng)的實(shí)現(xiàn)

    只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+Springboot+Maven+mybatis+Vue+Mysql實(shí)現(xiàn)學(xué)生管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2022-03-03
  • Spring?Boot?整合持久層之Spring Data JPA

    Spring?Boot?整合持久層之Spring Data JPA

    在介紹Spring Data JPA的時(shí)候,我們首先認(rèn)識(shí)下Hibernate。Hibernate是數(shù)據(jù)訪問解決技術(shù)的絕對(duì)霸主,使用O/R映射技術(shù)實(shí)現(xiàn)數(shù)據(jù)訪問,O/R映射即將領(lǐng)域模型類和數(shù)據(jù)庫(kù)的表進(jìn)行映射,通過程序操作對(duì)象而實(shí)現(xiàn)表數(shù)據(jù)操作的能力,讓數(shù)據(jù)訪問操作無(wú)須關(guān)注數(shù)據(jù)庫(kù)相關(guān)的技術(shù)
    2022-08-08
  • eclipse啟動(dòng)出現(xiàn)“failed to load the jni shared library”問題解決

    eclipse啟動(dòng)出現(xiàn)“failed to load the jni shared library”問題解決

    這篇文章主要介紹了eclipse啟動(dòng)出現(xiàn)“failed to load the jni shared library”問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(23)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(23)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • 詳談JSON與Javabean轉(zhuǎn)換的幾種形式

    詳談JSON與Javabean轉(zhuǎn)換的幾種形式

    下面小編就為大家?guī)硪黄斦凧SON與Javabean轉(zhuǎn)換的幾種形式。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08

最新評(píng)論