Python函数的递归调用

embedded/2025/3/13 18:52:39/

基本介绍

1、简单的说: 递归就是函数自己调用自己,每次调用时传入不同的值

2、递归有助于编程者解决复杂问题,同时可以让代码变得简洁

递归能解决什么问题?

1、各种数学问题如:皇后问题、汉诺塔、阶乘问题、迷宫问题等等

2、各种算法中也会使用到递归,比如快排,归并排序,二分查找,分治算法等

3、将用栈解决的问题 —》 递归代码比较简洁

递归例子

(1)打印问题

python">#当执行test(4),输出什么?
def test(n):if n > 2:test(n-1) #在函数内部调用它自己print("n=",n)# 执行
test(4)

调用一个函数就创建一个新空间,当返回的时候,对应的栈就被回收了。

(2)阶乘问题

python"># 阶乘,当执行factorial(4),返回值是多少?
def factorial(n):if n == 1:return 1else:return factorial(n-1)*n#执行
print(factorial(4))

递归重要规则

1、执行一个函数时,就创建一个新的空间(栈空间)
2、函数的变量是独立的,比如n变量
3、递归必须向退出递归的条件逼近,否则就是无限递归,就会出现 RecursionError: maximum recursiondepth exceeded 【死龟了:)】

python">def test(n):if n > 2:test(n)print("n=", n)# 调用
test(4)

4、当一个函数执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁


http://www.ppmy.cn/embedded/172324.html

相关文章

Android 底部 Tab 导航终极指南:封装 BottomTabHelper 实现高效、灵活的 Tab 布局

在 Android 开发中,底部 Tab 导航是常见的 UI 设计模式。本文将带你从零开始,封装一个高复用性的 BottomTabHelper 工具类,结合 BottomNavigationView 和 ViewPager2,实现高效、灵活的底部 Tab 导航功能。你将学到: 如…

深入浅出 IndexedDB:浏览器的 NoSQL 数据库

在现代 Web 开发中,前端数据存储的需求越来越复杂。无论是需要离线访问的应用,还是需要缓存大量数据的场景,传统的 LocalStorage 和 SessionStorage 已经无法满足需求。这时,IndexedDB 作为一种强大的浏览器端 NoSQL 数据库&#…

从零构建CNN:框架与自定义实现对比

文章目录 引言项目结构一、代码结构解析1.1 训练流程控制 (main.py)1.2 PyTorch实现的CNN模型 (cnn_pytorch.py)1.3 自定义实现CNN模型 (cnn_custom.py) 二、关键算法细节剖析2.1 卷积操作2.2 自定义实现卷积层2.3 ReLU与池化2.4 全连接层 总结 引言 卷积神经网络 (Convolutio…

AJAX的作用

AJAX(Asynchronous JavaScript And XML)的工作原理基于浏览器与服务器的异步通信,其核心细节可分为以下几个关键步骤: 1. 事件触发与请求创建 触发源:用户操作(点击按钮、输入文本等)或定时事件…

【每日八股】Redis篇(七):集群

目录 Redis 集群模式有哪些?Redis 切片集群的工作原理?哈希槽和 Redis 节点如何对应?主从模式的同步过程?全量同步增量同步 主服务器如何知道要将哪些增量数据发送给从服务器?如何避免主从数据不一致?主从架…

每日算法:力扣343.整数差分(动态规划)

题目: 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: n 10 输出…

3.11记录

leetcode刷题: 1. 334. 递增的三元子序列 - 力扣(LeetCode) 方法一:使用贪心算法求解 class Solution(object):def increasingTriplet(self, nums):first nums[0]second float(inf)for i in nums:if i>second:return Truee…

c++20 Concepts的简写形式与requires 从句形式

c20 Concepts的简写形式与requires 从句形式 原始写法(简写形式)等效写法(requires 从句形式)关键区别说明:组合多个约束的示例:两种形式的编译结果:更复杂的约束示例:标准库风格的约…