欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript遞歸函數(shù)解“漢諾塔”算法代碼解析

 更新時(shí)間:2018年07月05日 10:19:43   作者:缺德值  
這篇文章主要介紹了JavaScript遞歸函數(shù)解“漢諾塔”算法代碼解析,需要的朋友可以參考下

“漢諾塔”是一個(gè)著名的益智游戲。塔上有3根柱子和一套直徑各不相同的空心圓盤。開始時(shí)柱子上的所有圓盤都按照從小到大的順序堆疊。目標(biāo)是通過每次移動(dòng)一個(gè)圓盤到另一根柱子,最終把一堆圓盤移動(dòng)到目標(biāo)柱子上,過程中不允許把交大的圓盤放置在較小的圓盤之上。

仔細(xì)解讀這段話,如果有10個(gè)圓盤甚至更多,那操作步驟絕對(duì)多到讓人震驚,但目標(biāo)是把一堆圓盤移動(dòng)到目標(biāo)柱子上,如果把上面的9個(gè)圓盤看成一套,第10個(gè)圓盤看成另一套,先移動(dòng)9個(gè)圓盤到另一根柱子上,再把上面8個(gè)圓盤看成一套,第9個(gè)圓盤看成另一套……依次類推,分解移動(dòng),遞歸函數(shù)的思想就體現(xiàn)出來了。

完成代碼,非常簡(jiǎn)單的寫法,不知道還有沒有更簡(jiǎn)單的寫法?

var hanoi = function {disc, begin, end, helper) {
 if (disc > 0) {
  hanoi(disc - 1, begin, helper, end);
  document.writeln('移動(dòng)圓盤 ' + disc + ' 從 ' + begin + ' 到 ' + helper);
  hanoi(disc - 1, end, begin, helper);
 }
};
hanoi(3, '柱子一', '柱子二', '柱子三');

圓盤數(shù)量為3時(shí)的輸出:

  移動(dòng) 1 從 柱子一 到 柱子三
  移動(dòng) 2 從 柱子一 到 柱子二
  移動(dòng) 1 從 柱子三 到 柱子二
  移動(dòng) 3 從 柱子一 到 柱子三
  移動(dòng) 1 從 柱子二 到 柱子一
  移動(dòng) 2 從 柱子二 到 柱子三
  移動(dòng) 1 從 柱子一 到 柱子三

傳遞給hanoi函數(shù)的參數(shù)包括當(dāng)前移動(dòng)的圓盤編號(hào)和它將要用到的3根柱子。當(dāng)它調(diào)用資深的時(shí)候,它去處理當(dāng)前正在處理的圓盤之上的圓盤。最終,它會(huì)以一個(gè)不存在的圓盤編號(hào)去調(diào)用。在這樣的情況下,它不執(zhí)行任何操作。由于該函數(shù)對(duì)非法值不予理會(huì),也就不用擔(dān)心會(huì)導(dǎo)致死循環(huán)。

總結(jié)

以上所述是小編給大家介紹的JavaScript遞歸函數(shù)解“漢諾塔”算法代碼解析,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 完美實(shí)現(xiàn)js焦點(diǎn)輪播效果(一)

    完美實(shí)現(xiàn)js焦點(diǎn)輪播效果(一)

    這篇文章主要為大家詳細(xì)介紹了完美實(shí)現(xiàn)js焦點(diǎn)輪播效果的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 改變layer confirm彈窗按鈕的顏色方法

    改變layer confirm彈窗按鈕的顏色方法

    今天小編就為大家分享一篇改變layer confirm彈窗按鈕的顏色方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • div失去焦點(diǎn)事件實(shí)現(xiàn)思路

    div失去焦點(diǎn)事件實(shí)現(xiàn)思路

    blur只是針對(duì)form表單控件的,而對(duì)于 span , div , li 之類的,則沒辦法觸發(fā)它們的動(dòng)作,本文有個(gè)示例,看看是怎么實(shí)現(xiàn)的
    2014-04-04
  • JavaScript實(shí)現(xiàn)左右點(diǎn)擊切換圖片

    JavaScript實(shí)現(xiàn)左右點(diǎn)擊切換圖片

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)易左右點(diǎn)擊切換圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JS 日期比較大小的簡(jiǎn)單實(shí)例

    JS 日期比較大小的簡(jiǎn)單實(shí)例

    本篇文章主要是對(duì)JS日期比較大小的簡(jiǎn)單實(shí)例進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2014-01-01
  • 使用js判斷控件是否獲得焦點(diǎn)

    使用js判斷控件是否獲得焦點(diǎn)

    本篇文章主要是對(duì)使用js判斷控件是否獲得焦點(diǎn)的方法進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2014-01-01
  • JavaScript中丟失精度的問題及避免方法

    JavaScript中丟失精度的問題及避免方法

    JavaScript?是一門動(dòng)態(tài)類型的腳本語言,用于在瀏覽器中創(chuàng)建交互式的網(wǎng)頁,然而,由于其使用?IEEE?754?浮點(diǎn)數(shù)表示數(shù)字,可能會(huì)導(dǎo)致丟失精度的問題,本文將探討?JavaScript?中的丟失精度問題,以及如何避免這些問題,需要的朋友可以參考下
    2023-11-11
  • JavaScript調(diào)用后臺(tái)的三種方法實(shí)例

    JavaScript調(diào)用后臺(tái)的三種方法實(shí)例

    這篇文章介紹了JavaScript調(diào)用后臺(tái)的三種方法實(shí)例,有需要的朋友可以參考一下
    2013-10-10
  • JavaScript實(shí)現(xiàn)倒計(jì)時(shí)功能2種方法實(shí)例

    JavaScript實(shí)現(xiàn)倒計(jì)時(shí)功能2種方法實(shí)例

    很多網(wǎng)站在做活動(dòng)時(shí)會(huì)出現(xiàn)一個(gè)截止時(shí)間倒計(jì)時(shí)的提示,下面這篇文章主要給大家介紹了JavaScript實(shí)現(xiàn)倒計(jì)時(shí)功能2種方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 點(diǎn)擊進(jìn)行復(fù)制的JS代碼實(shí)例

    點(diǎn)擊進(jìn)行復(fù)制的JS代碼實(shí)例

    這篇文章介紹了點(diǎn)擊進(jìn)行復(fù)制的JS代碼實(shí)例,有需要的朋友可以參考一下
    2013-08-08

最新評(píng)論