递归或迭代函数(Python)

时间:2012-10-28 01:38:52

标签: python function recursion iteration

我无法确定以下函数是迭代还是递归,

我认为它是递归的,因为它会重复,但由于它有一个while循环,我有疑虑,

def function(n):
    while((n!=1) and (n!=0)):
        return function(n-1) + function(n-2)
    return n

2 个答案:

答案 0 :(得分:5)

它自称是递归的。递归(是一个单词)并不意味着不允许“标准”迭代。

顺便说一下。在您的情况下,没有进一步的迭代。 while循环基本上与简单的if语句相同,因为您在第一个循环中立即返回。所以你可以这样写:

def function(n):
    if (n != 1) and (n != 0):
        return function(n - 1) + function(n - 2)
    return n

答案 1 :(得分:1)

一个函数可以有一个循环并且是递归的。如果函数调用自身,则函数称为递归函数,但要注意函数不一定需要调用自身来被认为是递归的,请看一下这个例子:

def even(n):
    return True if n == 0 else odd(n - 1)

def odd(n):
    return False if n == 0 else even(n - 1)

even(10)
> True
odd(10)
> False

上述功能是“相互递归的”。