Python 什么';嵌套循环和递归函数之间的区别是什么?

Python 什么';嵌套循环和递归函数之间的区别是什么?,python,recursion,nested-loops,Python,Recursion,Nested Loops,使用嵌套循环或递归函数的输出有什么不同。在考虑条件的同时,哪一种是生成组合的最佳策略?递归和迭代(循环)是不同的策略,在一般意义上是不可比较的。对于某些算法,您可能同时具有迭代和递归版本(如阶乘或斐波那契数),对于其他一些算法,这两种算法中的一种可能比另一种更直观(如递归树行走) 无论算法遵循何种策略,输出都必须相同,否则您将实现不同的算法 归根结底,这实际上取决于您将使用的算法。递归可以被视为“只是”执行循环的另一种方式。主要的优点是代码可读性,正如您在本例中看到的,在本例中,当存在大量嵌套循

使用嵌套循环或递归函数的输出有什么不同。在考虑条件的同时,哪一种是生成组合的最佳策略?

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

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

归根结底,这实际上取决于您将使用的算法。

递归可以被视为“只是”执行循环的另一种方式。主要的优点是代码可读性,正如您在本例中看到的,在本例中,当存在大量嵌套循环时

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

>>>import sys
>>>print sys.getrecursionlimit()
1000

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

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

    function foo()
    {
            ?/ do work
            if( condition )
                    foo();
    }
迭代算法通常调用函数若干次(n)

函数foo()
{}
对于(int i=0;i
递归函数通常用于某些数据段需要重复操作,并且是否重复的条件取决于之前的操作。在数学中计算截断的无穷级数就是一个例子

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

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


但是要注意递归的调用堆栈溢出。最好仅在能够保证算法收敛并在一定数量的递归内结束时使用它。

这取决于您试图解决的特定问题。你不会总是简单地用一个代替另一个。注“”
    function foo()
    {}

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