Pythonの無名関数で再帰
やたーPythonの無名関数で再帰出来たよー(^o^)ノ
import sys, new for i in xrange(10): print i, (lambda n: n if n <= 1 else new.function(sys._getframe().f_code, globals(), None, None, None)(n - 1) + new.function(sys._getframe().f_code, globals(), None, None, None)(n - 2))(i)
実行結果:
0 0 1 1 2 1 3 2 4 3 5 5 6 8 7 13 8 21 9 34
ちゃんと動いてますね。
sys._getframe().f_codeに引数を渡してevalする方法が見つからなかったのでfunctionオブジェクトを作って呼んでいます。
もっと良い方法があれば教えてくださいヽ(´ー`)丿