私はPythonで乗算再帰(コンテナのすべての値を掛ける)を試みています。この関数は、リストの要素を位置引数(* n)として受け取ります。実行時に、「最大再帰深度に達しました」というエラーが表示されます。しかし、単に* nの代わりにnを使用してリスト内の要素を送信すれば、コードは正常に動作します。再帰は位置引数では機能しません
コードに動作していない:
def multiply(*n):
if n:
return n[0]*multiply(n[1:])
else:
return 1
multiply(5,1,4,9)
の作業コード:
def multiply(n):
if n:
return n[0]*multiply(n[1:])
else:
return 1
multiply([5,1,4,9])