我无法确定以下函数是迭代的还是递归的,
我认为它是递归的,因为它会重复自己,但由于它有一个 while 循环,我有疑问,
def function(n):
while((n!=1) and (n!=0)):
return function(n-1) + function(n-2)
return n
它自称是递归的。递归(就是一个词)并不意味着不允许“标准”迭代。
顺便说一句。在您的情况下,没有进一步的迭代。while 循环本质上与简单的 if 语句相同,因为您在第一个循环中立即返回。所以你可以这样写:
def function(n):
if (n != 1) and (n != 0):
return function(n - 1) + function(n - 2)
return n
一个函数可以有一个循环并且是递归的。如果函数调用自身,则称为递归函数,但请注意,函数不一定需要调用自身才能被视为递归,请看以下示例:
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
上述函数是“相互递归的”。