Python的递归函数原理和实例

Python的递归函数原理和实例递归函数 函数体内调用了该函数本身 分为传递和回归两个过程 组成部分 递归调用和终止条件 优点 思路和代码简单 缺点 占用内存多 效率低下 实例 使用递归来计算 6 的阶乘思路 代码实现 deffunc n ifn 1 return1else returnn func n 1 print func 6 解释 实际上调用过程是 6func 5func 4func 3func 2 func 1 这个过程是传递

递归函数:函数体内调用了该函数本身,分为传递和回归两个过程。

组成部分:递归调用和终止条件。

实例:使用递归来计算6的阶乘

def func(n): if n == 1: return 1 else: return n*func(n-1) print(func(6)) 

解释:实际上调用过程是6func(5func(4func(3func(2*func(1)))),这个过程是传递;当n=1时,此时func(1)=1,所以不再调用函数本身(达到终止条件了),然后开始回归,将func(1) = 1代回得到fun(2) = 2,以此类推,最终得到的就是func(6) = 720。

实例:斐波那契数列

def fib(n): if n == 1 or n == 2: return 1 else: return fib(n-1)+fib(n-2) print(fib(6)) # 输出第6位的数字 for i in range(1, 7): # 输出前6位的数字 print(fib(i)) 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233294.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Vue2.4中$attrs和$listeners的使用-学习笔记

    Vue2.4中$attrs和$listeners的使用-学习笔记首先我们来看下面的一张图,图中表示一个多级组件嵌套的情形。现在我们来讨论一种情况,A组件与C组件怎么通信,我们有多少种解决方案?我们使用VueX来进行数据管理,但是如果项目中多个组件共享状态比较少,项目比较小,并且全局状态比较少,那使用VueX来实现该功能,并没有发挥出VueX的威力。 使用B来做中转站,当A组件需要把信息传给C组件时,B接受A组件的信息,然后利用属性传给C组件,这是…

    2022年10月18日
    3
  • 实现PC视频播放最强画质教程( Potplayer播放器+MADVR插件)【转】

    实现PC视频播放最强画质教程( Potplayer播放器+MADVR插件)【转】转自:http://www.hangge.com/blog/cache/detail_1461.html一、MADVR介绍MADVR 是一款超强的视频插件,其配合高清播放软件,可以做到目前 PC 上播放高清视频的最强画质。MADVR 这款视频渲染器比市面上大多数播放器自带的渲染器有着更精确的颜色处理,更高质量的图像缩放缩放、以及更低的颜色错误率。这就使得它所渲染出来的视频在颜色上更…

    2022年9月14日
    2
  • 项目范围管理知识领域共有六个过程_项目范围管理的主要内容

    项目范围管理知识领域共有六个过程_项目范围管理的主要内容项目范围管理项目范围管理包括确保项目做且只做所需的全部工作,以成功完成项目的各个过程。管理项目范围主要在于定义和控制哪些工作应该包括在项目内,哪些不应该包括在项目内项目范围管理的各个过程,包括:5.1规划范围管理一创建范围管理计划,书面描述将如何定义、确认和控制项目范围的过程。5.2收集需求—一为实现项目目标而确定、记录并管理干系人的需要和需求的过程5.3定义范围——制定项目和产品详细描述…

    2022年9月16日
    2
  • odrive入门教程(securecrt使用教程串口)

    ODrive官方入门指南中,采用的是USB连接控制模式(中文翻译版本链接)使用的是NativeProtocol。当我们需要尝试串口通信实现时,需要专程ASCII协议来进行串口通信实现相关的命令,结合着入门指南以及ODrive中的相关属性方法参数,将流程中用到的相关方法整理如下:importserialimporttimeted=serial.Serial(port=’/dev/tty.wchusbserial1470′,baudrate=115200)ted.writ

    2022年4月16日
    52
  • 线程池参数到底要怎么配?这可能是最好的答案[通俗易懂]

    线程池参数到底要怎么配?这可能是最好的答案[通俗易懂]文章目录1线程池快速回顾2现有设置参数的方法及不足3如何设置核心线程数(corePoolSize)4如何设置最大线程数(maxPoolSize)5如何改变等待队列长度????Java学习:Java从入门到精通总结????Spring系列推荐:Spring源码解析????最近更新:2022年1月8日????个人简介:通信工程本硕????、阿里新晋猿同学????。我的故事充满机遇、挑战与翻盘,欢迎关注作者来共饮一杯鸡汤????点赞????收藏⭐留言????都是我

    2022年5月3日
    38
  • cacti监控一个web上的多个tomcat

    cacti监控一个web上的多个tomcat

    2021年8月31日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号