博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归:斐波那契数列与汉诺塔
阅读量:5282 次
发布时间:2019-06-14

本文共 1137 字,大约阅读时间需要 3 分钟。

递归(Recorsion)

递归算法里面最经典的两个非fibonacci和hanio莫属了

今天练习就这两数列用python代码实现

斐波那契数列

'''Fibonacci(斐波那契数列)1,1,2,3,5,8,13,25....'''#使用递归#算法复杂度:O(2^n) 注:该递归算法复杂度较高,且运行速度较慢    #定义实现函数def fib(n):    if n <= 1:        return n    else:          return(fib(n-1) + fib(n-2))# 获取用户输入 num = int(input("您要输出几项? "))# 检查输入的数字是否正确if num <= 0:    print("输入正数")else:    print("斐波那契数列:")    for i in range(num):        print(fib(i))#输出结果#输出结果您要输出几项? 10斐波那契数列:0112358132134
#使用简单的函数#算法复杂度更低的fibonacci数列#算法复杂为O(n)def fib(n):    num, a, b = 0, 0, 1    while num < n:        print(b)        a, b = b, a + b        n = n + 1    return 'done'#输出结果>>> fib(6)112358'done'

汉诺塔

#递归#算法复杂度:O(2^n)'''设定三根棒子从左到右为:x、y、z思路:第一步:x上的(n-1)个盘子借助 z 到 y上第二步:y上的(n-1)个盘子借助 x 到 z上'''def hanio(n,x,y,z):    if n == 1:        print(x,'-->',z)       #如果只有一层,直接从x移动到z    else:        hanio(n-1,x,z,y)    #将n-1个盘子从x移动到y        print(x,'-->',z)       #最底下的盘子从x移动到z         hanio(n-1,y,x,z)    #将n-1个盘子从y移动到zn = int(input('please input the floor:'))hanio(n,'x','y','z')#输出结果please input the floor:3x --> zx --> yz --> yx --> zy --> xy --> zx --> z

 

转载于:https://www.cnblogs.com/kumata/p/9108120.html

你可能感兴趣的文章
揭开Redis的神秘面纱
查看>>
Object流
查看>>
网关服务器——个人学习
查看>>
bzoj1293 [SCOI2009]生日礼物
查看>>
转 10 个 Nginx 的安全提示
查看>>
jQuery UI-draggable参数学习
查看>>
Windows Phone开发(8):关于导航的小技巧 转:http://blog.csdn.net/tcjiaan/article/details/7285062...
查看>>
React零碎知识点回顾
查看>>
字符串类型 字符串下标 字符串的方法 切片 for循环的一些总结
查看>>
Redis
查看>>
记一次mysql的preparedStatement使用超限问题
查看>>
Ajax学习笔记1之第一个Ajax应用程序
查看>>
机器学习算法应用场景实例六十则
查看>>
flush it! 关于数据缓冲区
查看>>
第十三讲:外观模式
查看>>
15_获取LayoutInflater的三种方法
查看>>
docker volume
查看>>
free - 显示系统内存信息
查看>>
webstorm快捷键整理
查看>>
【几个常见的分享按钮】(非JiaThis)
查看>>