python中的函数递归

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

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

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

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

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

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

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

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

相关推荐
John.Lewis13 小时前
C++加餐课-继承和多态:扩展学习
开发语言·c++·笔记
2301_8176722613 小时前
C#怎么实现RSA非对称加密 C#如何用RSA算法进行公钥加密私钥解密和数字签名【安全】
jvm·数据库·python
Greyson113 小时前
Go语言中纯函数调用的并发安全性详解
jvm·数据库·python
InfinteJustice13 小时前
怎么在Node.js中管理MongoDB的数据库迁移版本_使用migrate-mongo进行类似Flyway的版本演进控制
jvm·数据库·python
XMYX-013 小时前
12 - Go Slice:底层原理、扩容机制与常见坑位
开发语言·golang
codeejun13 小时前
每日一Go-50、Go微服务--配置中心
开发语言·微服务·golang
极光代码工作室13 小时前
基于数据挖掘的高校图书借阅分析系统
大数据·hadoop·python·数据分析·数据可视化
泽020213 小时前
LLMChat ----- 通过C++语言调用大语言模型所实现的聊天系统
开发语言·c++·语言模型
蒸汽求职13 小时前
告别静态文档:利用 Notion 搭建“交互式”简历的降维展示策略
开发语言·缓存·面试·职场和发展·金融·notion
steem_ding13 小时前
C++ 回调函数详解
开发语言·c++·算法