gpt4 book ai didi

Python基于递归算法实现的汉诺塔与Fibonacci数列示例

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python基于递归算法实现的汉诺塔与Fibonacci数列示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了Python基于递归算法实现的汉诺塔与Fibonacci数列。分享给大家供大家参考,具体如下:

这里我们通过2个例子,学习python中递归的使用.

1. 找出Fibonacci数列中,下标为 n 的数(下标从0计数) 。

Fibonacci数列的形式是这样的:0,1,1,2,3,5,8,13…… 。

① 使用while循环,python2代码如下:

?
1
2
3
4
5
6
7
def fib(n):
   a,b = 0 , 1
   count = 0
   while count<n:
     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代码如下:

?
1
2
3
4
5
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)为例,看一下递归的执行过程:

Python基于递归算法实现的汉诺塔与Fibonacci数列示例

同一程序,使用递归虽然程序简洁,但递归的执行效率要比循环低,系统的资源消耗比循环大。因为递归是一层一层地往里面调用,结束后又一层一层地返回,所以递归的执行效率并不高。那为什么还要使用递归呢?因为有一些问题,我们找不到非常明显的循环方案,但容易找到明显的递归方案。比如说著名的汉诺塔问题.

2. 汉诺塔 。

下图是一个简化版的汉诺塔游戏,只有4个盘子:

Python基于递归算法实现的汉诺塔与Fibonacci数列示例

汉诺塔游戏规则如下:

Python基于递归算法实现的汉诺塔与Fibonacci数列示例

python2代码如下:

?
1
2
3
4
5
6
7
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 。

希望本文所述对大家Python程序设计有所帮助.

原文链接:https://blog.csdn.net/sxingming/article/details/51306784 。

最后此篇关于Python基于递归算法实现的汉诺塔与Fibonacci数列示例的文章就讲到这里了,如果你想了解更多关于Python基于递归算法实现的汉诺塔与Fibonacci数列示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com