python | 递归踩坑
Python | 递归有坑几何?!
用对数器检验自己写的归并排序时,遇到关于递归的那些坑:
自己给单个例子检验归并排序时没有问题,但是用到对数器时,随机生成的数组大小不定,就会出错
似乎没法解决,要么改成非递归,要么用尾递归优化算法(tail recursion optimization TCO)
哎,遇到没见过的尾递归
什么是尾递归?
知乎上看到一个评论讲得很清楚,摘录下来:
function story() {
从前有座山,山上有座庙,庙里有个老和尚,一天老和尚对小和尚讲故事:story() // 尾递归,进入下一个函数不再需要上一个函数的环境了,得出结果以后直接返回。
}
function story() {
从前有座山,山上有座庙,庙里有个老和尚,一天老和尚对小和尚讲故事:story(),小和尚听了,找了块豆腐撞死了 // 非尾递归,下一个函数结束以后此函数还有后续,所以必须保存本身的环境以供处理返回值。
}
那么如何优化尾递归
在编译器处理过程中生成中间代码(通常是三地址代码),用编译器优化。
然后发现,我的归并排序不是尾递归形式,而且,python没有尾递归优化,所以无解
暂时先不用对数器检验了,后面搞懂了再更新。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)