>>返回主目录


源码

# 定义及特性
# 简单递归思维练习,求和:1+2+3+…+100
# 思路:sum(100) = sum(99) + 100
# sum(99) = sum(98) + 99
# ……
# sum(2) = sum(1) + 2
# sum(1) = 1 def sum_num(n):
if n == 1: # 出口
return 1
return n + sum_num(n - 1) print(sum_num(5))

源码

# 优缺点
# 巩固递归思维,求:5!
# 思路:5! = 1 * 2 * 3 * 4 * 5 = 5 * 4! = 5 * (4 * 3!)
# 利用数学归纳法,推导出递归表达式:n! = n * (n - 1)!
# 再使用函数实现:
def factorial(n):
if n == 1:
return 1 # 递归结束
return n * factorial(n - 1) # 问题规模减1,递归调用 print(factorial(5)) # 巩固递归执行过程:
def factorial_exe(n):
print(n, '去的过程')
if n > 0:
factorial_exe(n-1)
# return factorial_exe(n-1)
print(n, '回的过程')
return n factorial_exe(5)

源码

# 练习①
# 递归代码实现:
def winner_num(n): # n为最终要加到的数
if n <= 3:
return n
return winner_num(n - 3) print('想要赢得比赛,必须要抢到的数是:', winner_num(4))


源码

# 斐波那契数列
# 代码实现:
def fibon(n): # 参数是表示第n个斐波那契数,函数整体表示获取斐波那契数列中第n个数字的值
if n == 0:
return 0 # fibon(0) = 0
elif n == 1 or n == 2:
return 1 # fibon(1) = fibon(2) = 1
return fibon(n-1) + fibon(n-2) # fibon(n) = fibon(n-1) + fibon(n-2) (n >= 2) num = 5
print(f'此斐波那契数列第{num}个数是:', fibon(num))


源码

# 练习②汉诺塔游戏
# 递归代码实现:区分n=1和n>1的情况,具体实现如下:
i = 1 def hanoi(n, a, b, c):
global i
if n == 1:
print(f'第{i}步:', a, '-->', c)
i += 1
else:
hanoi(n - 1, a, c, b)
hanoi(1, a, b, c)
hanoi(n - 1, b, a, c) num = 3 # 圆盘个数
print('把', num, '个盘子全部移到C柱子的顺序为:')
hanoi(num, 'A', 'B', 'C')

>>返回主目录

4.6 Python3 进阶 - 递归函数的更多相关文章

  1. Python 函数进阶-递归函数

    递归函数 什么是递归函数 如果一个函数,可以自己调用自己,那么这个函数就是一个递归函数. 递归,递就是去,归就是回,递归就是一去一回的过程. 递归函数的条件 一般来说,递归需要边界条件,整个递归的结构 ...

  2. python3进阶之推导式之列表(list)推导式(comprehensions)

    1.前言 推导式,英文名字叫comprehensions,注意与comprehension(理解)只有s字母之差.推导式又可以叫解析式,推导式可以从一种数据序列构建新的数据序列的结构体.推导式分为,列 ...

  3. 笔记||Python3进阶之读取和写入yaml配置文件

    yaml是专门用来写配置文件的语言,简洁强大,远比JSON格式方便,yaml在python语言中有PyYAML安装包. - 首先需要pip安装:pip install pyyaml - yaml基本语 ...

  4. 笔记||Python3进阶之调用外部程序

    像wget可以下载文件 ffmpeg可以切割.合并.转换.录制视频 free命令可以查看linux内存使用信息 python提供了库来调用外部程序.命令?> 最常见的两种方法:       ①o ...

  5. 笔记||Python3进阶之装饰器

    # 装饰器# 特征: 是用一个@开头的字符串# 装饰器通常用来装饰函数.或者类的方法# 被装饰后的函数,通常是在原有的函数基础上,会多出增加一点功能# 一般来说装饰器本身也是一个函数## def te ...

  6. 4.3 Python3进阶-函数嵌套和嵌套调用

    >>返回主目录 源码 # 函数嵌套 def func1(): print("这是外部函数") def func2(): print("这是内部函数1" ...

  7. 4.10 Python3 进阶 - 迭代器 & 生成器

    >>返回主目录 源码 from typing import Iterable, Iterator # 可迭代对象:字符串.列表.元组.字典.集合.range().enumerate()等 ...

  8. python函数进阶(函数参数、返回值、递归函数)

    函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形 ...

  9. 学习Python--函数进阶

    函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形 ...

随机推荐

  1. Spring的安装

    Spring的安装 Spring框架包 spring-framework-4.3.6RELEASE-dist.zip http://repo.spring.io/simple/libs-release ...

  2. Pulsar部署和实践(一)

    前言 本地Docker部署Pulsar消息代理实现消息发布和消息订阅 介绍 相关概念,后面有时间再花时间整理下. 实践步骤 1.使用dokcer本地部署pulsar docker run -it \ ...

  3. 关于MySQL参数,这些你要知道

    前言: 在前面一些文章中,经常能看到介绍某某参数的作用,可能有些小伙伴仍搞不清楚 MySQL 参数是啥.本篇文章我们来聊聊 MySQL 参数,学习下如何管理维护 MySQL 参数. 1.MySQL参数 ...

  4. Java集合详解(三):HashMap原理解析

    概述 本文是基于jdk8_271版本进行分析的. HashMap是Map集合中使用最多的.底层是基于数组+链表实现的,jdk8开始底层是基于数组+链表/红黑树实现的.HashMap也会动态扩容,与Ar ...

  5. 33.2.NIO

    4.1概述[理解] BIO Blocking IO,阻塞型IO NIO No Blocking IO,非阻塞型IO 阻塞IO的弊端 在等待的过程中,什么事也做不了 非阻塞IO的好处 不需要一直等待,当 ...

  6. Samba服务配置及配置文件说明

    前言 1.配置Samba服务为什么要关闭防火墙(firewalld)和Selinux? 在linux操作系统中默认开启了防火墙,Selinux也处于启动状态,一般状态为enforing:所以,在我们搭 ...

  7. linux进阶之SVN集中式版本控制系统篇

    代码上线--版本控制系统 SVN             集中式版本控制系统 git                 分布式版本控制系统 SVN是subversion的缩写,即版本控制系统,是一个开放 ...

  8. Centos 7.4搭建es7.12.0+Skywalking7.8.5

    Skywalking整体架构图和分布式追踪系统原理:https://blog.csdn.net/weixin_39866487/article/details/111581322 软件包版本1.ela ...

  9. 灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据

    灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据 目录: 1.MM32F0010UART简介 2.MM32F0010UART特性 3.MM32F0010使用 ...

  10. .Net Redis实战——实现文章投票并排序

    本系列文章为学习Redis实战一书记录的随笔. 软件和环境版本:Redis:5.0.7  .Net 5.0 文中不会对Redis基础概念做过多介绍. Redis数据类型和命令可在菜鸟教程学习:http ...