麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 邏輯算法 > 正文

PHP漢諾塔問題的遞歸算法的實現(xiàn)和迭代算法的實現(xiàn)

2020-03-22 18:53:38
字體:
供稿:網(wǎng)友

這篇文章介紹的內(nèi)容是關(guān)于PHP漢諾塔問題的遞歸算法實現(xiàn)和迭代算法實現(xiàn),有著一定的參考價值,現(xiàn)在分享給大家,有需要的朋友可以參考一下

實現(xiàn)代碼


html' target='_blank'>程序代碼地址:https://github.com/ParrySMS/Exp/tree/master/ProLang/hannota

遞歸法 hannoRec.php
<?php/** * Created by PhpStorm. * User: L * Date: 2018-4-15 * Time: 2:07 *//** 遞歸實現(xiàn) * @param $id //盤子編號 * @param $first //起點柱子 * @param $middle //中介柱子 * @param $end //終點柱子 */function hanRec($id, $first, $middle, $end,$counter){    if ($id == 1) {        move(1,$first,$end,$counter);    } else {        hanRec($id-1,$first,$end,$middle,$counter);        move($id,$first,$end,$counter);        $counter++;        hanRec($id-1,$middle,$first,$end,$counter);    }}function move($id,$from,$to,$counter){    global $counter;    $counter++;   // echo "step: $counter, level $id from $from move to $to, <br/>";}

迭代法 hannoIter
<?php/** * Created by PhpStorm. * User: L * Date: 2018-4-17 * Time: 2:38 */class Params{ //定義一個對象來保存參數(shù)狀態(tài)    public $id;    public $num;    public $first;    public $middle;    public $end;    public $counter;    /**     * Params constructor.     * @param $num     * @param $first     * @param $middle     * @param $end     * @param $counter     */    public function __construct($id,$num, $first, $middle, $end, $counter)    {        $this->id = $id;        $this->num = $num;        $this->first = $first;        $this->middle = $middle;        $this->end = $end;        $this->counter = $counter;    }}function hanIter($id,$num, $first, $middle, $end, $counter){    $stack =init($id,$num, $first, $middle, $end, $counter);    while($stack){        //出棧        $action = array_pop($stack);       // var_dump($action);        if($action->num ==1){            move($action->id,$action->first,$action->end,$action->counter);        }else{            //入棧            $next_stack = init($action->id,$action->num,$action->first, $action->middle, $action->end, $action->counter);            $stack=array_merge($stack,$next_stack);        }    }}/** 入棧操作 * @param $id //需要移動的盤子 * @param $num //移動該盤子需要挪動的總盤子數(shù)量 * @param $first * @param $middle * @param $end * @param $counter * @return array */function init($id,$num,$first, $middle, $end, $counter){    unset($stack);    //注意入站出站順序    $stack = array();    //第一次回調(diào)    $stack[] =new Params($id-1,$num-1,$middle,$first,$end,$counter);    //第二次回調(diào)    $stack[] =new Params($id,1,$first, $middle, $end, $counter);    //第三次回調(diào)    $stack[] =new Params($id-1,$num-1,$first,$end,$middle,$counter);    return $stack;}/** 若在測試用例中,由于兩個文件都有此 move函數(shù),函數(shù)重名,注釋掉其中一個即可 function move($id,$from,$to,$counter){    global $counter;    $counter++;   // echo "step: $counter, level $id from $from move to $to, <br/>";}**/

執(zhí)行時間測試腳本 test.php
<?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(){    unset($row);    $row = array();    for ($i = 0; $i < TIMES; $i++) {    $row = getSortRow($row);    }    foreach ($row as $r) {        print <<< TR <tr>       <td>$r->iter</td>       <td>$r->rec</td>    </tr>TR;    }}function getSortRow(array $row){    $num = NUM;    $counter= 0;    $stime = microtime(true);    hanIter($num, $num, 'A', 'B', 'C', $counter);    $etime = microtime(true);    $iterTime = 1000 * ($etime - $stime);//    echo "<br/>";    $counter = 0;    $num = NUM;    $stime = microtime(true);    hanRec($num, 'A', 'B', 'C', $counter);    $etime = microtime(true);    $recTime = 1000 * ($etime - $stime);    $row[] = (object)["iter" => $iterTime, "rec" => $recTime];    return $row;}?><table border="1">    <tr>        <th>迭代 Iter/ms</th>        <th>遞歸 Rec/ms</th>    </tr>    <?php rowTable(); ?></table>
參考

迭代法思路:https://wenku.baidu.com/view/dce79165b0717fd5360cdcdb.html

相關(guān)推薦:

php遞歸函數(shù)實例分析

PHP遞歸算法簡單化

以上就是PHP漢諾塔問題的遞歸算法的實現(xiàn)和迭代算法的實現(xiàn)的詳細(xì)內(nèi)容,更多請關(guān)注 其它相關(guān)文章!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美黄色免费视频 | 国产中出在线观看 | 日本黄色免费观看视频 | 午夜视频播放 | 久久久久免费电影 | 91网页视频入口在线观看 | 免费一级毛片在线播放不收费 | 8x成人在线电影 | 国产精品久久久久av | 免费黄色在线电影 | 一区二区免费看 | 久久精品视频12 | videos高潮| 欧美另类69xxxxx 视频 | 日本a级免费 | 日韩精品中文字幕在线观看 | 亚洲免费永久 | videos高潮 | 香蕉视频h | 久久亚洲精品视频 | 福利在线小视频 | 精品一区二区三区免费看 | 免费永久看羞羞片网站入口 | 亚州欧美视频 | 97超级碰碰人国产在线观看 | 国产羞羞网站 | 欧美综合在线观看视频 | 亚洲一级成人 | 欧美国产日韩在线 | 成人毛片免费在线 | 国产精品自拍片 | 日本在线观看一区二区 | 精国品产一区二区三区有限公司 | 国产99精品在线 | 亚洲成在人 | 欧美日韩手机在线观看 | 国产精品一区二区三区在线播放 | 黄色av片在线观看 | 日韩在线欧美在线 | 久久精品国产一区二区电影 | 欧美性受xxx黑人xyx性爽 |