python中的函数递归

函数递归,就是一个函数,自己调用自己。

如上图所示,是一段通过定义函数,编写函数体来实现for循环。实现的是从1到n的累乘。即求n的阶乘,

如上图所示,是一段函数的递归来实现1到n的累乘操作,将1****n拆分成一个个的子问题,如果条件是1时就返回1,如果条件不是1时,就return n * factor(n - 1)将n的值一步步衰减。

递归的代码,虽然很多时候看起来写法很简单,但是执行过程可能会非常复杂!!

在分析递归代码的时候,光用脑子想,是很困难!!

要么画图,要么使用调试器,来一步步的查看代码的运行情况。

如果递归函数的递推公式写错,那么就可能出现无限递归的情况,造成栈溢出(即这块内存空间用来储存变量的值是不够的,由此出现栈溢出的情况。)

递归的优点:代码非常简洁,尤其是处理一些"问题本身就是通过递归的方式定义的"

相关推荐
草莓熊Lotso1 天前
红黑树从入门到进阶:4 条规则如何筑牢 O (logN) 效率根基?
服务器·开发语言·c++·人工智能·经验分享·笔记·后端
曹牧1 天前
C#:姓名脱敏
开发语言·c#
缺点内向1 天前
C# 中 Word 文档目录的插入与删除指南
开发语言·c#·word·.net
r***d8651 天前
Rust宏编程指南
开发语言·后端·rust
czhc11400756631 天前
C# 1120抽象类 static
java·开发语言·c#
你不是我我1 天前
【Java 开发日记】有了解过 SpringBoot 的参数配置吗?
java·开发语言·spring boot
ivanfor6661 天前
多租户架构的三级权限体系:设计逻辑与精准控制实现
java·开发语言·数据库
zzzsde1 天前
【C++】C++11(1):右值引用和移动语义
开发语言·c++·算法
学困昇1 天前
C++11中的包装器
开发语言·数据结构·c++·c++11