1

次の関数が反復的か再帰的かを判断できませんでした。

繰り返すから再帰だと思うのですが、whileループがあるので疑問があります。

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

2 に答える 2

5

それ自体を呼び出すため、再帰的です。再帰性 (という言葉です) は、「標準的な」反復が許可されていないという意味ではありません。

そしてところで。あなたの場合、それ以上の反復はありません。while ループは、最初のループですぐに戻るため、単純な if ステートメントと本質的に同じです。したがって、次のように書くことができます。

def function(n):
    if (n != 1) and (n != 0):
        return function(n - 1) + function(n - 2)
    return n
于 2012-10-28T01:41:58.867 に答える
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

上記の関数は「相互再帰的」です。

于 2012-10-28T01:51:52.067 に答える