PHP計算河內塔問題

2021-07-10 19:01:46 字數 843 閱讀 1682

題目:漢諾塔(又稱河內塔)問題是印度的乙個古老的傳說。開天闢地的神勃拉瑪在乙個廟裡留下了三根金剛石的棒,第一根上面套著64個圓的金片,最大的乙個在底下,其餘乙個比乙個小,依次疊上去,廟裡的眾僧不倦地把它們乙個個地從這根棒搬到另一根棒上,規定可利用中間的一根棒作為幫助,但每次只能搬乙個,而且大的不能放在小的上面。解答結果請自己執行計算,程式見尾部。面對龐大的數字(移動圓片的次數)18446744073709551615,看來,眾僧們耗盡畢生精力也不可能完成金片的移動。

後來,這個傳說就演變為漢諾塔遊戲:

1.有三根桿子a,b,c。a桿上有若干碟子

2.每次移動一塊碟子,小的只能疊在大的上面

3.把所有碟子從a杆全部移到c桿上

經過研究發現,漢諾塔的破解很簡單,就是按照移動規則向乙個方向移動金片:

如3階漢諾塔的移動:a→c,a→b,c→b,a→c,b→a,b→c,a→c;

此外,漢諾塔問題也是程式設計中的經典遞迴問題。

<?php

function

hanoi

($num,$a="a",$b="b",$c="c"): move desk 1 from ".$a." to ".$c."

"; }else: move desk 1 from ".$a." to ".$c."

"; hanoi($num-1,$b,$a,$c);

}} //呼叫函式,輸出結果

hanoi(64);//我的電腦比較渣,這麼龐大的資料計算不出來,最大只能算到17個

//輸出總步驟數

echo

"total:****";

?>

河內塔問題

首先關於這個問題網上有兩種 答案都相同 第一種 include includeusing namespace std int towers int size,char f,char t,char s voidhannuota intn,chara,charb,charc 自定義hannuota函式,...

河內之塔 漢諾塔問題 遞迴

河內之塔 towersofhanoi 是法國人m.claus lucas 於1883年從泰國帶至法國的,河內為越戰時 北越的首都,即現在的胡志明市 1883年法國數學家edouardlucas曾提及這個故事,據說創世紀時benares有一座波羅教塔,是由三支鑽石棒 pag 所支撐,開始時神在第一根棒...

雙重河內塔II

又稱 雙重漢諾塔問題 雙重河內塔包含 2n 個圓盤,它們有 n 種不同的尺寸,每一種尺寸的圓盤有兩個。如通常那樣,要求每次只能移動乙個圓盤,且不能把較大的圓盤放在較小的圓盤上面。a 如果相同尺寸的圓盤是相互不可區分的,要把乙個雙重塔從一根樁柱移動到另一根樁柱需要移動多少次?所以隱藏含義就是 移動的過...