怎么在PHP中利用遞歸實現(xiàn)一個漢諾塔算法-創(chuàng)新互聯(lián)

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)怎么在PHP中利用遞歸實現(xiàn)一個漢諾塔算法,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)揚中免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

具體如下:

漢諾塔(又稱河內(nèi)塔)問題是源于印度一個古老傳說的益智玩具。大梵天創(chuàng)造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規(guī)定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。簡而言之,有三根相鄰的柱子,標(biāo)號為A,B,C,A柱子上從下到上按金字塔狀疊放著n個不同大小的圓盤,要把所有盤子一個一個移動到柱子B上,并且每次移動同一根柱子上都不能出現(xiàn)大盤子在小盤子上方,請問至少需要多少次移動?

遞歸過程序如下:

1)把n-1個圓從A移到C
2)把剩下一個由A移到B
3)再把n-1個由C移到B,完成

代碼如下:

<?php
//將所有圓盤從a移到b
function hanuota($n,$a,$b,$c){
  global $step;
  if($n==1){
    $step++;
    echo "將圓盤 $n 從 $a 柱子 到 $b 柱子 <br />";
  }else{
    hanuota($n-1,$a,$c,$b);
    $step++;
    echo "將圓盤 $n 從 $a 柱子 到 $b 柱子 <br />";
    hanuota($n-1,$c,$b,$a);
  }
}
//移動的次數(shù)
$step = 0;
hanuota(4, 'A', 'B', 'C');
echo "移動次數(shù):" . $step;
?>

運行結(jié)果:

將圓盤 1 從 A 柱子 到 C 柱子
將圓盤 2 從 A 柱子 到 B 柱子
將圓盤 1 從 C 柱子 到 B 柱子
將圓盤 3 從 A 柱子 到 C 柱子
將圓盤 1 從 B 柱子 到 A 柱子
將圓盤 2 從 B 柱子 到 C 柱子
將圓盤 1 從 A 柱子 到 C 柱子
將圓盤 4 從 A 柱子 到 B 柱子
將圓盤 1 從 C 柱子 到 B 柱子
將圓盤 2 從 C 柱子 到 A 柱子
將圓盤 1 從 B 柱子 到 A 柱子
將圓盤 3 從 C 柱子 到 B 柱子
將圓盤 1 從 A 柱子 到 C 柱子
將圓盤 2 從 A 柱子 到 B 柱子
將圓盤 1 從 C 柱子 到 B 柱子
移動次數(shù):15

上述就是小編為大家分享的怎么在PHP中利用遞歸實現(xiàn)一個漢諾塔算法了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文題目:怎么在PHP中利用遞歸實現(xiàn)一個漢諾塔算法-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://bm7419.com/article40/dihcho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、企業(yè)網(wǎng)站制作、定制開發(fā)云服務(wù)器、用戶體驗、網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化