「フィボナッチ数/Python」の版間の差分

ページの作成:「Pythonフィボナッチ数(fibonacci)の記述例。 == 記述例1 == PythonではPython 2.4から導入されたデコレーターを用いて...」
 
imported>Administrator
編集の要約なし
 
(他の1人の利用者による、間の1版が非表示)
2行目: 2行目:


== 記述例1 ==
== 記述例1 ==
[[Python]]ではPython 2.4から導入された[[デコレーター]]を用いて[[メタプログラミング]]を実現した人がおり<ref>http://d.hatena.ne.jp/wasabiz/20110118/1295335821</ref>、それを使えば[[関数]]の頭に「@tail_recursive」と書くことで末尾再帰最適化を明示することができる。
[[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 」の記述を消せばよい。その場合は[[エントリーポイント]]内の[[ループ変数]]「x」が大きいと[[スタックオーバーフロー]]を起こすと思う。
これらを用いた記述例は以下のようになる。[[末尾呼び出し最適化]]を用いない場合には「@tail_recursive 」の記述を消せばよい。その場合は[[エントリポイント]]内の[[ループ変数]]「x」が大きいと[[スタックオーバーフロー]]を起こすと思う。


<source lang="python">
<source lang="python">