PHP漢諾塔問題的遞迴演算法實現和迭代演算法實現

2021-08-18 21:50:06 字數 1532 閱讀 6313

<?php

/** * created by phpstorm.

* user: l

* date: 2018-4-15

* time: 2:07

*//** 遞迴實現

*@param $id //盤子編號

*@param $first //起點柱子

*@param $middle //中介柱子

*@param $end //終點柱子

*/function

hanrec

($id, $first, $middle, $end,$counter)

else

}function

move

($id,$from,$to,$counter)

<?php

/** * created by phpstorm.

* user: l

* date: 2018-4-17

* time: 2:38

*/class

params

}function

haniter

($id,$num, $first, $middle, $end, $counter)

else

}}/** 入棧操作

*@param $id //需要移動的盤子

*@param $num //移動該盤子需要挪動的總盤子數量

*@param $first

*@param $middle

*@param $end

*@param $counter

*@return array

*/function

init

($id,$num,$first, $middle, $end, $counter)

/** 若在測試用例中,由於兩個檔案都有此 move函式,函式重名,注釋掉其中乙個即可

function move($id,$from,$to,$counter)

**/

<?php

/** * created by phpstorm.

* user: l

* date: 2018-4-17

* time: 2:18

*/require

"hannorec.php";

require

"hannoiter.php";

define('times', 100);

define('num', 10);

function

rowtable

() foreach ($row

as$r)

}function

getsortrow

(array $row)

?>

"1">

迭代 iter/ms

遞迴 rec/ms

<?php rowtable(); ?>

迭代法思路:

遞迴演算法 漢諾塔問題

圖1 漢諾塔分析 三個過程 漢諾塔問題,經典遞迴問題 遞迴問題的關鍵 1.如何縮小問題的規模 2.如何解決最簡單問題 即 1找出遞迴體,2找出遞迴出口 試圖追蹤程式執行過程,都是徒勞的 2018年4月10日10 49 46 by 楷諧之力 includevoid move char frm,char...

漢諾塔問題遞迴演算法

1.題目 漢諾塔 hanoi tower 又稱河內塔,源於印度乙個古老傳說。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,任何時候,在小圓盤上都不能放大圓盤,且在三根柱子之間一次只...

遞迴演算法 漢諾塔問題

程式呼叫自身的程式設計技巧稱為遞迴。乙個過程或函式在其定義或說明中又直接或間接地呼叫自身的一種方法,通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解。遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的 量。遞迴的能力在於用有限的語句來定義物件的無...