嵌套循环和递归函数之间有什么区别?

时间:2014-10-19 16:56:07

标签: python recursion nested-loops

使用嵌套循环或递归函数的输出差异是什么。在考虑条件的情况下,哪个是产生组合的最佳方法?

3 个答案:

答案 0 :(得分:1)

递归可以被视为“只是”做循环的另一种方式。主要优点是代码可读性,正如您在Stackoverflow question中看到的那样,在这种情况下,当存在大量嵌套循环时。

但要小心,因为Python(1000)上有一个小的递归限制。您可以通过键入

进行验证
>>>import sys
>>>print sys.getrecursionlimit()
1000

有关递归vs循环的其他情况的概述,请查看this pdf。但是,如this Stackoverflow answer中所述,您应该坚持使用Python上的纯迭代方案。

答案 1 :(得分:1)

递归算法从同一函数(递归)中调用函数。是否执行递归是基于某些条件。

    function foo()
    {
            ?/ do work
            if( condition )
                    foo();
    }

迭代算法通常会多次调用函数(n)。

    function foo()
    {}

    for(int i = 0; i < n; i++)
            foo();

当需要重复操作某些数据并且是否重复的条件取决于先前的操作时,通常使用递归函数。在数学中计算截断的无限级数就是一个例子。

当条件不依赖于先前的操作时,通常使用迭代函数。反转矩阵具有预定义的n。

这两种方法都可以用于大多数目的,但是对于特定情况,您通常会发现一种方法比另一种方法更容易。

请注意带有递归的callstack溢出。如果你能保证算法收敛并在一定数量的递归中结束,最好只使用它。

答案 2 :(得分:0)

递归和迭代(循环)是不同的策略,在一般意义上无法比较。对于某些算法,您可能同时具有迭代和递归版本(例如阶乘或Fibonacci数),对于其他算法,其中一个可能比另一个更直观(例如树行走的递归)。

无论算法遵循何种策略,输出必须相同,否则您将实现不同的算法。

最重要的是,它实际上取决于您将使用的算法。

相关问题