3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
河內塔是一個數學遊戲:有三個塔柱A、B、C,遊戲的目的就是將A塔柱的圓盤全數移到C塔柱 遊戲有幾個規則: 1. 一次只能搬移一個圓盤 2. 小圓盤可以移到大圓盤上面,大圓盤不可以移到小圓盤上面。 事實上,可以從河內塔移動次數中,發現這是有遞迴規則的。 以最小的圓盤 n 為例: 當圓盤總數為 1 時, n 移動了 1 次 當圓盤總數為 2 時, n 移動了 2 次 當圓盤總數為 3 時, n 移動了 4 次 當圓盤總數為 4 時, n 移動了 8 次 為了要讓大盤可以移出來到目的柱,當盤數越多,其他較小圓盤就必須先移到暫存柱(三柱其中一柱) 若有n個盤子,則移動完畢所需的次數為2^n – 1 Java import java.util.Scanner; public class HanoiTower { public static void main(String args[]) { System.out.print("請輸入盤數:"); Scanner s = new Scanner(System.in); hanoi(s.nextInt(), 'A', 'B', 'C'); } public static void hanoi(int n, char start, char temp, char end) { if(n > 0){ //將所有盤子移到暫存區 hanoi(n - 1, start, end, temp); //將最後一個盤子移到目的區 display(n, start, end); //把暫存區的盤子移回目的區 hanoi(n - 1, temp, start, end); } } public static void display(int n, char start, char end) { System.out.println("Move ring " + n + " from " + start + " to " + end); } } Categories: DataStructureJava 分類 Android AngularJS Chrome Database MySQL DataStructure Editor Vim Firefox Git Hadoop Language Go Java JavaScript jQuery jQueryChart Node.js Vue PHP Laravel ZendFramework Python Mac Network Cisco DLink Juniper Oauth Server Apache Share Unix FreeBSD Linux WebDesign Bootstrap CSS HTML Wordpress Search 搜尋:

本文由blogjohnsonluorg提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦