使用嵌套循环或递归函数的输出差异是什么。在考虑条件的情况下,哪个是产生组合的最佳方法?
答案 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数),对于其他算法,其中一个可能比另一个更直观(例如树行走的递归)。
无论算法遵循何种策略,输出必须相同,否则您将实现不同的算法。
最重要的是,它实际上取决于您将使用的算法。