[解決済み] Rubyのフィボナッチ数列(再帰)
2022-02-04 13:56:38
質問
次のような関数を実装しようとしているのですが、何度やっても
stack level too deep (SystemStackError)
というエラーが発生します。
何か思い当たることはありますか?
def fibonacci( n )
[ n ] if ( 0..1 ).include? n
( fibonacci( n - 1 ) + fibonacci( n - 2 ) ) if n > 1
end
puts fibonacci( 5 )
解決方法は?
これを試してみてください
def fibonacci( n )
return n if ( 0..1 ).include? n
( fibonacci( n - 1 ) + fibonacci( n - 2 ) )
end
puts fibonacci( 5 )
# => 5
この記事もご覧ください フィボナッチ・ワンライナー
などなど・・・。 https://web.archive.org/web/20120427224512/http://en.literateprograms.org/Fibonacci_numbers_(ルビー)
これで多くの解決策を浴びせられましたね :)
ソリューションの問題点について
を返す必要があります。
n
その
0
または
1
そして
add
最後の2つの番号ではなく、最後の番号と次の番号
新モディファイ版
def fibonacci( n )
return n if n <= 1
fibonacci( n - 1 ) + fibonacci( n - 2 )
end
puts fibonacci( 10 )
# => 55
ワンライナー
def fibonacci(n)
n <= 1 ? n : fibonacci( n - 1 ) + fibonacci( n - 2 )
end
puts fibonacci( 10 )
# => 55
関連
-
[解決済み】Ruby: 特定のバージョンのruby gemをインストールする方法は?
-
[解決済み] json gem のインストール中にエラー 'mkmf.rb can't find header files for ruby' が発生する。
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] 末尾再帰とは何ですか?
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyからシェルコマンドを呼び出す方法
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Rubyのattr_accessorとは何ですか?
-
[解決済み】フィボナッチ数列の計算複雑性
-
[解決済み] フィボナッチ数列の書き方は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】rubyの1e18という数字は何を意味するのか?
-
[解決済み] ルビーオールウェイズ ラウンドアップ
-
[解決済み] Rubyのフィボナッチ数列(再帰)
-
[解決済み] Ruby on railsで改行せずにコンソールに "puts "を使用するにはどうすればよいですか?
-
[解決済み] string literal in condition "とはどういう意味ですか?
-
[解決済み] Rubyでリフレクション?
-
[解決済み] Ruby の `print` から bash スクリプトを呼び出して echo するにはどうしたらいいですか?
-
[解決済み] Ruby Net::HTTPの実行期限が切れた
-
[解決済み] Rubyでfailキーワードは何をするのですか?
-
[解決済み] Ruby 1.8.7 ハッシュを文字列に変換する