日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

经典汉诺塔java

發(fā)布時間:2024/8/26 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 经典汉诺塔java 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

正兒八經(jīng)的漢諾塔解題:

漢諾塔移動思想分三步:

1、將上面的第1層~第(n-1)層從初始位置移動到中間位置

2、再將第n層移動到目標(biāo)位置

3、最后將第1層到~第(n-1)層從中間位置移動到目標(biāo)位置(三者順序不能變)

規(guī)則不是說每次只能移動一個漢諾塔么,假如n>2,那么第一步跟第三步都涉及到移動多個漢諾塔,這還怎么移?

第一步和第三步又將問題帶回了 ”將n塊漢諾塔從初始位置移動到目標(biāo)位置“ ,不同的是:

1、移動的初始位置跟目標(biāo)位置改變,

2、移動的數(shù)量n的值變成了n-1。

剛開始學(xué)習(xí)遞歸的時候腦海里想不出來遞歸怎么實(shí)現(xiàn)的,還是要動筆推一下,想是想不完的。下面是調(diào)用一次遞歸函數(shù),程序在調(diào)用函數(shù)跑起來的時候,就像一次請求被一層層處理并且轉(zhuǎn)發(fā),被原路返回響應(yīng)一樣。第一個響應(yīng)數(shù)據(jù)必然是第二個響應(yīng)要用到的數(shù)據(jù)。

簡易版本:?

package Action;public class demo {public static void hanio(int n, String A, String B, String C) {if (n < 1) {System.out.println("漢諾塔的層數(shù)不得小于一");} else if (n == 1) { // 遞歸出口System.out.println("移動:" + A + "——》" + C);return;} else { // 核心移動三步hanio(n - 1, A, C, B);System.out.println("移動:" + A + "——》" + C);hanio(n - 1, B, A, C);}}public static void main(String args[]) {String a = "a";String b = "b";String c = "c";hanio(3, a, b, c);} }

移動:a——》c
移動:a——》b
移動:c——》b
移動:a——》c
移動:b——》a
移動:b——》c
移動:a——》c

總結(jié)

以上是生活随笔為你收集整理的经典汉诺塔java的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。