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
キモイ。