递归算法解决问题的特点:

(1)递归就是在过程或函数里调用自身

(2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

(3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低,所以一般不提倡用递归算法设计程序。

(4)在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储,递归次数过多容易造成栈溢出等

递归算法所体现的“重复”一般有三个要求:

(1)每次调用在规模上都有所缩小(通常是减半)

(2)是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出作为后一次的输入)

(3)在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模位达到直接解答的大小为条件)无条件递归调用将会成为死循环而不能正常结束。

递归算法一般用于解决三类问题:
(1)数据的定义是按递归定义的。(比如Fibonacci函数)
(2)问题解法按递归算法实现。(回溯)
(3)数据的结构形式是按递归定义的。(比如数的遍历,图的搜索,二分法查找等)

1-100求和

(1)非递归

sum = 0

for i in range(1,101):

  sum += i

print(sum)

(2)递归方法

def sum1(n):

  if n <=0:

    return 0

  else:

    n = n + sum1(n -1)

  return n

print(sum1(100))

2.阶乘

def sum2(m):

  if n < 1:

    return 1

  else:

    n = n * sum2(n -1)

  return n

print(sum2(5))

转载于:https://www.cnblogs.com/dx-Dark/p/9055143.html

Python3 递归算法相关推荐

  1. 数据结构链表之双向链表:Python3 实现双向链表——2

    Python3 实现双向链表 双向链表 定义:双向链表是链表中的一种,双向链表也叫双链表,它由多个节点组成,每个节点由一个数据域和两个指针域组成,一个指针指向前驱元素,一个指向后继元素 双向链表一般用 ...

  2. 【python】一道LeetCode搞懂递归算法!#131分割回文串 #以及刷LeetCode的一点点小心得 [数据结构与算法基础]

    题目:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串.返回 s 所有可能的分割方案. # 示例 输入: "aab" 输出: [["aa",&q ...

  3. 第一次LeetCode周赛心得(力扣-cn周赛,使用python3)

    第一次力扣参赛:第 174 场力扣周赛 第 174 场力扣周赛赛题: https://leetcode-cn.com/circle/discuss/lEfEkb/view/OrAJAh/ 第 174 ...

  4. python汉诺塔递归算法流程图,python实现汉诺塔递归算法经典案例

    Python汉诺塔递归问题 python请用递归算法编程解决汉诺塔问题 在线等 关于python递归函数实现汉诺塔 def move(n,a,b,c): #1 if n==1: #2 print(a, ...

  5. python3 递归函数,python3的递归函数 | 吴老二

    今天要说的是python3的递归函数,首先我们要理解什么是递归函数,什么时候可以用到递归函数,递归函数的好处是什么.我们先举个例子看一下,先写一个计算1到10的和,我们使用循环的话就需要使用for循环 ...

  6. pip 无法卸载 pillow 解决方案 Not uninstalling pillow at /usr/lib/python3/dist-packages

    1. 问题现象 使用 pip 卸载 pillow 时无法卸载,报如下错误: $ sudo pip3 uninstall pillow Not uninstalling pillow at /usr/l ...

  7. Python2 与 Python3 区别

    Python2.x 与 Python3.x 区别 1. print 函数 Python2 中 print 是语句(statement),Python3 中 print 则变成了函数.在 Python3 ...

  8. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  9. Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建

    Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建 一.Anaconda 创建 python3.7环境 1.进入 C:\Users\用户名 目录下,找到 ...

  10. python2转python3文件

    python37 -m 2to3.py -w C:\Users\Administrator\Desktop\搜狗细胞词库处理.py 命令 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA ...

最新文章

  1. php浮点数计算比较及取整不准确解决方法
  2. Excel Sheet Column Number
  3. IE8提示JS错误(KB927917)终极解决方法
  4. 为什么老是把词语读反_关于语言表达 6岁儿童经常把词语顺序念反
  5. 档案管理软件 php_致PM:除了Excel,你还有这五个项目管理软件可以用
  6. 细粒度图像分类_【完结】16篇图像分类干货文章总结,从理论到实践全流程大盘点!...
  7. springboot系列十二 Spring-Data-ElasticSearch Jpa、QueryBuilder、MatchQuery、位置搜索、GeoPoint...
  8. awz3格式转epub格式转mobi格式
  9. 2022年大厂中秋礼盒大赏,卷的就是创意!
  10. VS2003 搜索直接导致卡死问题
  11. 计算机策略删除必须要一个密码,取消电脑开机密码
  12. 跳跃游戏 改 dfs
  13. 行测数量关系公式总结
  14. 原来 SQL 中的 NULL 是这么回事儿
  15. Nginx+Tomcat负载均衡和动静分离理论实操详解来袭!
  16. 屏幕使用时间 不能申请延长_屏幕时间限制什么都不教我们的孩子
  17. 理想的清理软件——CCleaner
  18. 一文彻悟容器网络通信
  19. 重庆顶味香手把手教你做重庆肥肠面!几个小妙招秒杀路边面馆
  20. 潜水寻宝:AHP层次分析法应用浅析

热门文章

  1. 趣图:IT 项目的时间估算
  2. 斯诺登给普通人开发了个「反监控」的 App
  3. 微信终端跨平台组件 mars 开源
  4. mysql数据库过滤数据_MySQL数据库常规操作一些简单绕过过滤的方法
  5. 怎么自动运行文件并隐藏_绝对实用!iphone用久卡顿怎么办?5个隐藏小技巧提升运行速度...
  6. javase二维数组笔记
  7. 手机页面内容超出屏幕宽度时实现可拖拉滑动效果
  8. SQL 查询CET使用领悟
  9. Android手机root概念
  10. 注意Stream.Seek,如果想要重复使用Stream,注意用Seek复位