作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
Possible Duplicates:
Real-world examples of recursion
Examples of Recursive functions
我看到大多数编程语言教程通过使用一个简单的例子来教授递归,即如何生成斐波那契数列,我的问题是,除了生成斐波那契数列之外,还有其他很好的例子来解释递归是如何工作的吗?
最佳答案
经典的是二叉树搜索:
def findval (node,val):
if node == null:
return null
if node.val = val:
return node
if node.val > val:
return findval (node.left,val)
return findval (node.right,val)
findval (root,thing_to_find)
这可能比一个简单的公式复杂一点,但它是递归的“面包和黄油”使用,它说明了使用它的最佳位置,即最小化递归级别。
我的意思是:您可以将两个非负数相加:
def add (a,b):
if b == 0:
return a
return add (a+1,b-1)
但是你会发现自己很快就会用完大量的堆栈空间(当然,除非编译器优化了尾端递归,但你可能应该忽略你关心的教学水平)。
关于c++ - 除了生成斐波那契数列之外,还有什么好的递归示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4945128/
我是一名优秀的程序员,十分优秀!