Guido认为程序员大多数工作不需要递归
Python的创造者Guido在最近一篇关于为什么Python里没有 Tail Recurssion Elimination (暂译:尾递归优化)的文章中提到一个我们可能经常听到的观点“真正的程序员一般不用递归”。
http://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html
Third, I don’t believe in recursion as the basis of all programming. This is a fundamental belief of certain computer scientists, especially those who love Scheme and like to teach programming by starting with a “cons” cell and recursion. But to me, seeing recursion as the basis of everything else is just a nice theoretical approach to fundamental mathematics (turtles all the way down), not a day-to-day tool.
翻译:(第三点)我不认为递归是编程的基础。递归是一些计算机科学家们,尤其是那些热爱Scheme (lisp的一支)和喜欢用‘cons’ 来教表头表尾和递归的人们。但是对我(Guido)来说,递归只是一些为基础数学研究而存在的理论手段(例如分形几何学),而不是日常的编程工具。
这也再次证明当年“耗”哥当年在楼下遛弯时候给我的教导,好的程序员不在于多么会写看似非常聪明的代码,重要的是能够思路清晰的用最简单的方式解决问题。
(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)
《Guido认为程序员大多数工作不需要递归》的相关评论
今天写了个python递归的代码,结果没递归几次就说递归太深
和c,c++的递归能力不能比啊
搜索下原因就看到了你的这篇文章
看到要递归还得用python调用c,c++啊
check out
sys.setrecursionlimit(limit)
可以设置最大递归深度,不过似乎不是很推荐的做法。欢迎回来交流,很多实际中的问题都可以不用递归。不过有时候确实是递归的代码看着更美。
sss
这个问题的原因是没有按照尾递归的写法,造成了重复计算,重复的栈调用导致默认的1000的栈调用深度很快被用完,具体的分析可以看SICP
有的时候不用递归的话,写字符串处理函数会很麻烦。当然用库函数就不用考虑这种问题了……
你写个基于树结构做变换的程序就知道不用递归多蛋疼了……
这个确实是,大部分工作其实递归都不会用到,出了某些特殊情况。
递归很容易就写出一些神仙代码。