タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

troに関するnfunatoのブックマーク (2)

  • Pythonで相互再帰の末尾再帰最適化もできた - IT系で覚醒めたい

    さっきの記事の続き。なんと相互再帰ですらできてしまった。 @tail_recursive def even(n): if n == 0: return True else: return odd(n-1) @tail_recursive def odd(n): if n == 0: return False else: return even(n-1) print even(10000) さっきと同様、@tail_recursiveというデコレータをつけていなければスタックオーバーフローになる。上みたいにちゃんと付けてれば、難無くTrueが返ってくる。小一時間この仕組みについて悩んでみたけど、たしかになってる。CONTINUEがクラス属性じゃなくてインスタンス属性になってるおかげで。ものすごいクラスじゃないか、これ。

  • Pythonで末尾再帰最適化をする。 - IT系で覚醒めたい

    Pythonは最強ですね。文法はチョー簡単、ライブラリも充実度がすごい、それでいてメタプログラミングができる。そのメタプログラミングを使うと末尾再帰最適化までできるそうです…おそろしやNew Tail Recursion Decorator « Python recipes « ActiveState Code class tail_recursive(object): def __init__(self, func): self.func = func self.firstcall = True self.CONTINUE = object() def __call__(self, *args, **kwd): if self.firstcall: func = self.func CONTINUE = self.CONTINUE self.firstcall = False try:

  • 1