「フィボナッチ数/Python」の版間の差分
imported>Administrator 編集の要約なし |
|||
| (他の1人の利用者による、間の1版が非表示) | |||
| 2行目: | 2行目: | ||
== 記述例1 == | == 記述例1 == | ||
[[Python]]ではPython 2.4から導入された[[デコレーター]]を用いて[[メタプログラミング]]を実現した人がおり<ref>http://d.hatena.ne.jp/wasabiz/20110118/1295335821</ref>、それを使えば[[関数]]の頭に「@ | [[Python]]ではPython 2.4から導入された[[デコレーター]]を用いて[[メタプログラミング]]を実現した人がおり<ref>http://d.hatena.ne.jp/wasabiz/20110118/1295335821</ref>、それを使えば[[関数]]の頭に「@tail_recursive」と書くことで[[末尾再帰最適化]]を明示することができる。 | ||
なお、同じくものを[[クラス]]ではなく[[クロージャー]]で書き直した人もいる<ref>http://d.hatena.ne.jp/tanihito/20110119/1295459297</ref>。 | なお、同じくものを[[クラス]]ではなく[[クロージャー]]で書き直した人もいる<ref>http://d.hatena.ne.jp/tanihito/20110119/1295459297</ref>。 | ||
これらを用いた記述例は以下のようになる。[[末尾呼び出し最適化]]を用いない場合には「@tail_recursive 」の記述を消せばよい。その場合は[[ | これらを用いた記述例は以下のようになる。[[末尾呼び出し最適化]]を用いない場合には「@tail_recursive 」の記述を消せばよい。その場合は[[エントリポイント]]内の[[ループ変数]]「x」が大きいと[[スタックオーバーフロー]]を起こすと思う。 | ||
<source lang="python"> | <source lang="python"> | ||