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

歡迎訪問 生活随笔!

生活随笔

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

python

python汉诺塔用循环结构实现_Python基于递归算法实现的汉诺塔与Fibonacci数列

發布時間:2025/3/15 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python汉诺塔用循环结构实现_Python基于递归算法实现的汉诺塔与Fibonacci数列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇文章主要介紹了Python基于遞歸算法實現的漢諾塔與Fibonacci數列,結合實例形式分析了漢諾塔與Fibonacci數列的遞歸實現技巧,需要的朋友可以參考下

本文實例講述了Python基于遞歸算法實現的漢諾塔與Fibonacci數列。分享給大家供大家參考,具體如下:

這里我們通過2個例子,學習python中遞歸的使用。

1. 找出Fibonacci數列中,下標為 n 的數(下標從0計數)

Fibonacci數列的形式是這樣的:0,1,1,2,3,5,8,13……

① 使用while循環,python2代碼如下:

def fib(n):

a,b=0,1

count=0

while count

a,b=b,a+b

count=count+1

print a

運行結果如下:>>> fib(0)

0

>>> fib(1)

1

>>> fib(2)

1

>>> fib(3)

2

>>> fib(4)

3

>>> fib(5)

5

② 使用遞歸(遞歸必須要有邊界條件),python2代碼如下:

def fib(n):

if n==0 or n==1:#遞歸的邊界條件

return n

else:

return fib(n-1)+fib(n-2)

運行結果如下:>>> fib(0)

0

>>> fib(1)

1

>>> fib(2)

1

>>> fib(3)

2

>>> fib(4)

3

>>> fib(5)

5

遞歸是最能表現計算思維的算法之一,我們以f(4)為例,看一下遞歸的執行過程:

同一程序,使用遞歸雖然程序簡潔,但遞歸的執行效率要比循環低,系統的資源消耗比循環大。因為遞歸是一層一層地往里面調用,結束后又一層一層地返回,所以遞歸的執行效率并不高。那為什么還要使用遞歸呢?因為有一些問題,我們找不到非常明顯的循環方案,但容易找到明顯的遞歸方案。比如說著名的漢諾塔問題。

2. 漢諾塔

下圖是一個簡化版的漢諾塔游戲,只有4個盤子:

漢諾塔游戲規則如下:

python2代碼如下:

def hanoi(a,b,c,n):

if n==1:#遞歸結束條件

print a,'->',c

else:

hanoi(a,c,b,n-1)

print a,'->',c

hanoi(b,a,c,n-1)

運行結果:>>> hanoi('A','B','C',1)

A -> C

>>> hanoi('A','B','C',2)

A -> B

A -> C

B -> C

>>> hanoi('A','B','C',3)

A -> C

A -> B

C -> B

A -> C

B -> A

B -> C

A -> C

相關推薦:

神經網絡(BP)算法Python實現及應用

總結

以上是生活随笔為你收集整理的python汉诺塔用循环结构实现_Python基于递归算法实现的汉诺塔与Fibonacci数列的全部內容,希望文章能夠幫你解決所遇到的問題。

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