通常の関数の定義には、それ自体への呼び出しを含めることができます。問題はありません。ラムダ関数に参照する名前がないという単純な理由で、ラムダ関数でそれを行う方法を理解できません。それを行う方法はありますか?どうやって?
これを行うには、関数に名前を付けるしかありません。
fact = lambda x: 1 if x == 0 else x * fact(x-1)
または、以前のバージョンのpythonの場合:
fact = lambda x: x == 0 and 1 or x * fact(x-1)
更新:他の答えからのアイデアを使用して、階乗関数を単一の名前のないラムダに割り込むことができました:
>>> map(lambda n: (lambda f, *a: f(f, *a))(lambda rec, n: 1 if n == 0 else n*rec(rec, n-1), n), range(10))
[1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]
可能ですが、実際にはお勧めできません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加