パスカルの三角形

何となくパスカルの三角形を描きたくなったので。

def combination(n, k)
  if k == 1 or k == n
    return 1
  else
    return combination(n - 1, k) + combination(n - 1, k - 1)
  end
end

def line(n)
  a = Array.new
  (1..n).each do |k|
    a << combination(n, k)
  end
  a
end

(1..10).each do |n|
  p line(n)
end

実行結果です。

[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]

追記:k == 1ではなくてk == 0では?というコメントをいただきました。ごもっともです。ご指摘感謝です♪

def combination(n, k)
  if k == 0 or k == n
    return 1
  else
    return combination(n - 1, k) + combination(n - 1, k - 1)
  end
end

def line(n)
  a = Array.new
  (0..n).each do |k|
    a << combination(n, k)
  end
  a
end

(0..10).each do |n|
  p line(n)
end