日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

汉诺塔算法python_经典算法:汉诺塔

發布時間:2024/9/3 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汉诺塔算法python_经典算法:汉诺塔 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學編程,學IT,算法也是必不可缺的,這一次給大家帶來一個經典的遞歸算法題,漢諾塔。算是算法的入門小題目之一吧~

視頻教程

什么是漢諾塔?

我這里直接拉來一個圖解釋一下(掛了請聯系我)

就是這么一個東西了,把所有的圓盤從左邊移動到右邊,并且大的圓盤不能夠壓住小的。怎么才能完成呢?

規則理解了,開始鉆牛角尖

先來看看只有一個圓盤的情況,

嗯 相當的簡單 A--->C 就可以了

兩個的情況呢? 也不難 A--->B A--->C B--->C

三個的話有點挑戰了 大家自己推一推

好的 十個呢?就算想了半天弄好了,怎么讓程序幫我們做呢?頭大!

牛角尖鉆完了,冷靜分析

在我們每次距離對稱最近的狀態,都是把最大的圓盤放到了最右邊,剩下的圓盤放到了中間。

然后把中間的再都放到右邊就好了

這道理就跟把大象裝冰箱一樣啊 都是三步呢!

這時候千萬不要去想怎么把n-1層都搬到B柱 也不要想怎么把N-1層都搬到C柱,如果繼續想下去你就會進入死循環,這時候你只需要做一個思維轉換。

當我們把n-1層都搬到了中間柱的時候,只需要把最大的那個盤,從A搬到C柱就好了,剩下的怎么辦呢?C柱永遠是目標柱,我們不需要去移動它。這時候我們大點力!把B柱子掰下來!扔到A前面!無視掉C柱上面的大圓盤,因為我們不會再去動它了!是不是畫面似曾相識?對啊!遞歸啊!繼續把最左邊的n-1層都弄到中間,最大的扔到C就好了啊!

看到這里如果你還在鉆牛角尖的話,可以暫時休息一下了。

思維轉換完成的過來寫代碼!

// JS寫一下

function move(num,from,button,to){

// 如果只有一個圓盤

if(num==1){

console.log(from,"---->",to)

// 最左邊的放到最后邊完了個事!

return

}

// 如果柱子有點多咋辦呢?

// 先把n-1個左邊的放到中間唄

move(num-1,from,to,button) //放過去了,具體過程是啥?我特么哪里知道 它里面怎么操作?管他呢,反正他自己知道自己干了啥

console.log(from,"---->",to) // 我就干一件事,我就把左邊最大的放到右邊,雖然我不知道現在我是不是真正的左邊,我可能是被你大力從中間拽過來的左邊。

// 放完了然后呢?

// 把所有中間的柱子扔到最右邊去

move(num-1,button,from,to)

}

move(3,"A","B","C") //測試一下

//golang

package main

import (

"fmt"

)

func main() {

move(3,"A","B","C")

}

func move(num int,from string,button string,to string){

if num==1 {

fmt.Printf("%s--->%s\n",from,to)

return

}

move(num-1,from,to,button)

fmt.Printf("%s--->%s\n",from,to)

move(num-1,button,from,to)

}

# python

def move(num ,fro,button,to)

if (num==1)

print(fro,'--->',to)

return

move(num-1,fro,to,button)

print(fro,'--->',to)

move(num-1,button,fro,to)

move(3,'A','B','C')

總結

遞歸這個東西,千萬不可鉆牛角尖,把大問題分成小問題,復雜問題簡單化,如果非要把遞歸過程推出來的話,那誰都救不了你

歡迎大家關注我的博客,里面會有我所寫博客的視頻版本,如果你有更多疑問或者想學前端的話,可以加我微信shouzi_1994或者在博客下方品論留言,三大Q.

總結

以上是生活随笔為你收集整理的汉诺塔算法python_经典算法:汉诺塔的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。