( ꒪⌓꒪) ゆるよろ日記

( ゚∀゚)o彡°オパーイ!オパーイ! ( ;゚皿゚)ノシΣ フィンギィィーーッ!!!

Rubyのデフォルト引数で再帰

Rubyのデフォルト引数では、他の引数に依存した式を書ける。地味に便利。

[1] pry(main)> def foo(a, b = a * 2)
[1] pry(main)*   puts b
[1] pry(main)* end  
=> nil
[2] pry(main)> foo(3)
6
=> nil

再帰もかける。デフォルト引数で再帰させてフィボナってみる

[3] pry(main)> def fib(n,r = (n <=1 ? n : fib(n-2) + fib(n-1)))
[3] pry(main)*   r
[3] pry(main)* end  
=> nil
[4] pry(main)> 11.times do |n| puts "fib(#{n}) => #{fib(n)}" end
fib(0) => 0
fib(1) => 1
fib(2) => 1
fib(3) => 2
fib(4) => 3
fib(5) => 5
fib(6) => 8
fib(7) => 13
fib(8) => 21
fib(9) => 34
fib(10) => 55

キモイ。