Python算法:递归
递归算法,说不出来对它是种什么样的感受。
硬要描述一下大概就是又爱又恨吧。
给人的感觉就像给脑子里塞了个回旋加速器,很猛,但是很晕。
运行环境 Runtime environment
1 | 操作系统: Windos10 |
背景
多层级数据的结构化处理、文件列表管理、算法…balabala
递归的应用场景,是真的很多。
步步实现 递归
最原始的递归函数,自己调用自己,无限循环,调用栈叠起来~
1 | def recursive_count_Decrement(v): |
添加个跳出无限循环调用的基线条件
1 | def recursive_count_Decrement(v): |
模拟一个情景,我有一个硬盘,盘里有多个文件夹,文件夹里还有文件夹,然后其中只有一个文件夹里有一坨狗屎的图片,其余都是空文件。
那么,要找到这坨‘狗屎’,要怎么办。
思路:
检查文件夹里的每一样东西
有‘狗屎’结束 or 里面还有文件夹,钻进去继续全检查
用伪代码来描述一下:(不能直接运行)
1 | def recursive_search(folder): |
emmm,逻辑非常清晰233
当然,python实现文件夹递归那就不用这么麻烦了,网上的写法很多尤其是用os.walk方法的,就已经足够了。
总结
递归只是为了让解决方案更清晰,并没有性能上的优势。
有些情况下,使用循环的性能更好。
根据情况和需求来选择更重要。
简单来说,递归函数就是自己调用自己,然后再给该函数设置一个基线条件让它从无限循环调用中跳转出来。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 快乐咸鱼のRaXianch窝!
评论
WalineValine