日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

漢諾塔問題相信只要學習計算機的人都知道。這是一個古老而又偉大的問題。在這篇文章中,主要是給出遞歸解決漢諾塔問題的代碼方法。畢竟面試的時候,HR比我們要變態很多,怎么蹂躪我們怎么玩。

一、什么是漢諾塔問題

這個問題來源于印度。有三個金剛石塔,第一個從小到大摞著64片黃金圓盤。現在把圓盤按大小順序重新擺放在最后一個塔上。并且規定,在小圓盤上不能放大圓盤,在三個塔之間一次只能移動一個圓盤。

一個古老而又經典的算法-漢諾塔問題

 

 

也就是說將 from 上的圓盤全部移動到 to 上,并且要保證小圓盤始終在大圓盤上。

如何來求解呢?很明顯這道題大家都知道使用遞歸的方式來做。不過如何去考慮遞歸呢?

在這里我想說一下我個人目前關于遞歸的理解。遞歸其實就是一個方程式:f(n) = f(n-1) + a;也就是說在設計遞歸的時候應該考慮下面三個方面:

(1)求解f(n)的時候,假設f(n-1)已經求解出來了。我們不要去考慮f(n-1)是如何求解出來的。

(2)關鍵點在于遞歸的結束條件。

(3)遞歸往往和分治法是分不開的。對于復雜的遞歸,往往將遞歸拆分。然后再合并

整體的遞歸方法流程是這樣的。首先我們要寫一個遞歸方法。

(1)首先判斷遞歸結束時候的操作

(2)遞歸分解

而本題的漢諾塔就是使用典型的遞歸思想。首先我們求解f(n)

① 將 n-1 個圓盤從 from -> buffer

一個古老而又經典的算法-漢諾塔問題

 

 

② 將 1 個圓盤從 from -> to

一個古老而又經典的算法-漢諾塔問題

 

 

③ 將 n-1 個圓盤從 buffer -> to

一個古老而又經典的算法-漢諾塔問題

 

 

④以上三步都是為了求解f(n),最后我們給出遞歸結束的條件。只有一個圓盤的時候,只需一次移動操作即可。

二、代碼實現

 

一個古老而又經典的算法-漢諾塔問題

 

分享到:
標簽:漢諾
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定