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

作者:快递小可 时间:2021-07-01 15:57:12 

本文实例讲述了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<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代码如下:


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代码如下:


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数列
0
投稿

猜你喜欢

  • MySQL约束超详解

    2024-01-21 07:10:00
  • python3下pygame如何实现显示中文

    2021-01-15 00:57:04
  • mysql中limit查询踩坑实战记录

    2024-01-16 13:38:45
  • 如何用ASP实现文章点击数?

    2008-08-11 21:17:00
  • JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】

    2024-04-16 08:50:16
  • 解决pycharm工程启动卡住没反应的问题

    2021-04-05 09:54:02
  • Python实现图像手绘效果的方法详解

    2021-10-27 08:22:23
  • python中的__init__ 、__new__、__call__小结

    2021-07-19 20:10:38
  • 多种网页弹出窗口代码

    2007-11-24 21:13:00
  • Pytorch之parameters的使用

    2022-05-22 21:06:01
  • Python 动态导入对象,importlib.import_module()的使用方法

    2023-01-24 01:48:47
  • JS实现数字格式千分位相互转换方法

    2023-08-31 08:24:48
  • Golang单元测试中的技巧分享

    2024-04-23 09:47:32
  • python中__slots__节约内存的具体做法

    2023-04-10 16:28:34
  • PyTorch实现图像识别实战指南

    2022-01-08 14:27:24
  • python3实现单目标粒子群算法

    2023-02-27 05:55:09
  • python Dijkstra算法实现最短路径问题的方法

    2022-02-21 03:08:51
  • JS实现在文本指定位置插入内容的简单示例

    2024-04-19 10:15:17
  • python开发之list操作实例分析

    2023-04-17 16:07:33
  • Python中函数参数匹配模型详解

    2022-01-01 20:39:59
  • asp之家 网络编程 m.aspxhome.com