>>返回主目录


源码

# 定义及特性
# 简单递归思维练习,求和: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. 在其他程序集访问internal类

    前言  本文将介绍如何在其他程序集访问internal类的方法 首先我们新建一个解决方案,其中同时新建两个类库FooALibray和FooALibray,如下: 其中FooA类代码如下: intern ...

  2. 快速熟悉windows操作

    快捷键 win + E : 打开我的电脑 Ctrl+Shift+Esc:打开资源管理器 Alt +F4 :关闭当前窗口 Win + R:打开命令窗口 DOS 命令 打开CMD 的方式 Win+R:输入 ...

  3. CentOS 8.2远程连接vncserver升级后1.10.1无法启动解决记录

    CentOS 8.2远程连接vncserver升级后1.10.1无法启动解决记录   问题起源:手贱yum upgrade,重启服务器后无法使用vnc viewer远程连接 查看状态 # system ...

  4. 佳能m62套机5500 佳能EOS M50 M6 MARK2 II二代 最低到过5800

    佳能m62套机5500 佳能EOS M50 M6 MARK2 II二代

  5. 联想RD350板载RAID110i,安装CentOS 7 不识别RAID设备

    联想RD350板载RAID110i,安装CentOS 7 不识别RAID设备   情况如题所述. 1. 确认BIOS中 Boot mode为[UEFI]或者[AUTO] 2. 确认BIOS中 Stor ...

  6. 【备忘】ffmpeg推流命令

    1 组播推流 ffmpeg -re -i "D:\\OTT\\adghg2323.mp4" -vcodec libx264 -vprofile baseline -level 30 ...

  7. python文件处理(对比和筛选)

    #!/user/bin/python #!coding=utf-8 # -*- coding: utf-8 -*- # 2017-9-25 #author:jingwenshuai import sy ...

  8. java和kotlin的可见性修饰符对比

    private 意味着只在这个类内部(包含其所有成员)可见: protected-- 和 private一样 + 在子类中可见. internal -- 能见到类声明的 本模块内 的任何客户端都可见其 ...

  9. kafka之一:kafka简介

    现在从事java开发的同学,不论是在面试过程中还是在日常的工作中,肯定会碰到消息队列的情况,市面上消息队列有很多:kafka.rocketMQ.rabbitMQ.zeroMQ等,从本篇博客起计划分享一 ...

  10. openresty - nginx - 配置

    local function local_print(str) local dbg = io.open("conf/lua/logs/output.txt", "a+&q ...