python--14 递归

递归是神马

 

  >>> def recursion():
  ... recursion()
  ...
  >>> recursion()
  Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in recursion
  File "<stdin>", line 2, in recursion
  File "<stdin>", line 2, in recursion
  [Previous line repeated 995 more times]
  RecursionError: maximum recursion depth exceeded

  >>> import sys
  >>> sys.setrecursionlimit(1000000)

 

递归球阶乘

 写一个求阶乘的函数

  正整数阶乘从1乘以2乘以3乘以4一直乘到所要求的数。

  例如所给的数是5,则阶乘式是1*2*3*4*5,得到的积是120,所以120就是5的阶乘。

 非递归版本的实现

  >>> def factorial(n):
  ... result = n
  ... for i in range(1,n):
  ... result *= i
  ... return result
  ...

  >>> print('%d 的阶乘是: %d' % (5,factorial(5)))
  5 的阶乘是: 120

 递归实现

  >>> def recursion(x):
  ... if x == 1:
  ... return x
  ... else:
  ... return x * recursion(x-1)
  ...
  >>> recursion(5)
  120
  >>> recursion(6)
  720

递归效率低,方法调用

递归使用不当,死循环

斐波那契(Fibonacci)  Leonardo Fibonacci

   迭代实现

  >>> def fabnacii(n):
  ... n1 = 1
  ... n2 = 1
  ... n3 = 1
  ... if(n <  1):
  ... print('输入出错')
  ... return -1
  ... while((n - 2) > 0):
  ... n3 = n1 + n2
  ... n1 = n2
  ... n2 = n3
  ... n -= 1
  ... return n3
  ...
  >>> fabnacii(10)
  55 

 递归实现

  >>> def fab(n):
  ... if n < 1:
  ... print('输入出错')
  ... if n==1 or n==2:
  ... return 1
  ... else:
  ... return fab(n-1) +fab(n-2)
  ...
  >>> fab(10)
  55

分治思想

递归 -- 汉诺塔

  >>> def hanoi(n,x,y,z):
  ... if n == 1:
  ... print(x, '-->', z)
  ... else:
  ... hanoi(n-1,x,z,y)#将n-1个盘子从x移动到y上
  ... print(x, '-->', z)#将最底下的最后一个盘子从x移动到z上
  ... hanoi(n-1, y,x,z)#将y上的n-1个盘子移动到z上
  ...
  >>> hanoi(4,'x','y','z')
  x --> y
  x --> z
  y --> z
  x --> y
  z --> x
  z --> y
  x --> y
  x --> z
  y --> z
  y --> x
  z --> x  
  y --> z
  x --> y
  x --> z
  y --> z

转载于:https://www.cnblogs.com/fengjunjie-w/p/7491736.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/268459.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Reflector.FileDisassembler反编译DLL

转自http://www.cnblogs.com/wuliangbo Reflector for .NET 下载地址&#xff1a;http://www.aisto.com/roeder/dotnet/ Reflector.FileDisassembler.dll cs文件的工具下载地址 &#xff1a; http://www.denisbauer.com/Downloads/Reflector.FileDisassembler.zip 1.下载Refl…

NOD32最新升级ID

2009年08月20日NOD32最新升级ID —————————————————————————— 两个EAV激活码&#xff1a; M26F-0233-3WRA-7M6W-H4QL-8K7J M26F-0233-3WRA-8DET-U646-T94T 用户名 密码 版本 EAV-19640855 - rtr3afv8pa >> ess E…

IOS https抓包及10.3.3版本证书不生效问题解决

Charles安装HTTP抓包HTTPS抓包1. Charles安装 官网下载安装Charles:https://www.charlesproxy.com/download/ 2. HTTP抓包 &#xff08;1&#xff09;查看电脑IP地址 &#xff08;2&#xff09;设置手机HTTP代理iphone连上wifi&#xff0c;点击“设置->无线局域网->连接的…

C# 备忘

1.使用partial来修饰类和结构&#xff0c;运行跨多个*.cs文件来定义c#类型。类型名必须是一致的&#xff0c;并且定义在相同的.NET命名空间中。 2.C#提供了关键字sealed来防止发生继承&#xff0c;如果将类标记为sealed&#xff0c;编译器将不会允许我们从这个类型派生。有时不…

计算机网络上网时间,电脑怎么限制上网时间

孩子的学习和娱乐都离不开电脑,很多事情的完成都是需要借助电脑,但其负面影响也逐渐体现下面是学习啦小编为大家整理的关于电脑怎么限制上网时间&#xff0c;一起来看看吧!电脑怎么限制上网时间先登录路由器主页。如果知道家长和孩子电脑的Mac地址的可以直接跳到第四步。很多人…

计算机画面的音乐素材,音效素材:高科技用户界面UI点触计算机数据分析全息音效合集...

音效素材&#xff1a;高科技用户界面UI点触计算机数据分析全息音效合集包含1000多组模块化用户界面音效&#xff0c;由最好的制造商“EURORACK”亲自录制。MODULAR UI是由世界著名的音响设计师和音乐家理查德迪瓦恩共同创建的一个用户界面音效库。设计并完全由理查德迪瓦恩的个…

cacti安装FAQ

为什么80%的码农都做不了架构师&#xff1f;>>> CACTI中MSN和EMAIL不能同时预警 描述 CACTI中使用thold可以实现邮件的预警&#xff0c;超过阀值的时候&#xff0c;基本上可以在半个小时之内把邮件发出来&#xff0c;这种方式是比较稳定的方式。 另外可以使用MSN…

初中计算机新课标培训心得,新课标学习心得体会

新课标学习心得体会由好范文网的会员投稿精心推荐&#xff0c;小编希望以下6篇范文对你的学习工作能带来参考借鉴作用。第1篇&#xff1a;新课标学习心得体会新课标学习心得体会怎么写&#xff1f;以下是我们给你的范文格式参考。用课余时间我认真学习了中心校下发的小学品德与…

ios 阅览器html5,HTML5测试:iOS 8浏览器Safari提升明显

没错&#xff0c;日前&#xff0c;国外著名手机网站GSMArena就发现iOS 8中的Safari浏览器确实增强了对HTML5的支持。如下图所示&#xff0c;在HTML5test.com的数据库中&#xff0c;新版本Safari得到的分数为440(满分为550)&#xff0c;相比iOS 7中的Safari的412分来说还是有不小…

SQL2008R2的 遍历所有表更新统计信息 和 索引重建

【2.以下是更新统计信息】 DECLARE UpdateStatisticsTables CURSOR READ_ONLY FORSELECT sst.name,Schema_name(sst.schema_id)FROM sys.tables sstWHERE sst.TYPE UDECLARE name VARCHAR(80),schema VARCHAR(40)OPEN UpdateStatisticsTablesFETCH NEXT FROM UpdateStati…

mysql五-1:单表查询

一 介绍 本节内容: 查询语法 关键字的执行优先级 简单查询 单条件查询:WHERE 分组查询:GROUP BY HAVING 查询排序:ORDER BY 限制查询的记录数:LIMIT 使用聚合函数查询 使用正则表达式查询 company.employee员工id id int 姓名 emp_na…

ST、SC、FC、LC光纤接头区别

ST、SC、FC、LC光纤接头区别ST、SC、FC光纤接头是早期不同企业开发形成的标准&#xff0c;使用效果一样&#xff0c;各有优缺点。 ST、SC连接器接头常用于一般网络。ST头插入后旋转半周有一卡口固定&#xff0c;缺点是容易折断&#xff1b;SC连接头直接插拔&#xff0c;使用很方…

计算机部分选择怎么操作,计算机基础试题选择题部分

计算机基础试题选择题部分《计算机基础》选择题1、世界上第一台电子计算机研制成功的时间是___________。 A、1936 B、1956 C、1946 D、19752、世界上第一台电子数字式计算机的____________。 A、ENDAC B、ENIAC C、UNIVAC D、EDVAC3、被称为计算机之父的是__________。 A、艾伦…