Pascal三角形

Pascal三角形基本上就是在解 nCr ,因為三角形上的每一個數字各對應一個nCr,其中 n 為 row,而 r 為 column,如下:
    0C0
   1C0 1C1
  2C0 2C1 2C2
 3C0 3C1 3C2 3C3
4C0 4C1 4C2 4C3 4C4

Pascal三角形中的 nCr 可以使用以下這個公式來計算,以避免階乘運算時的數值溢位:
nCr = [(n-r+1)/r] * nCr-1
nC0 = 1

def combi(n,r)
  p=1
  for i in 1..r
    p=p*(n-i+1)/i
  end
  p
end

def paint()
  nN=12
  for n in 0..nN
    for r in 0..n
      if(r==0)
        for i in 0..(nN-n)
          print "  "
        end
      else
        print "  "
      end
      printf("%3d",combi(n,r))
    end
    puts "\n"
  end
end
paint()

你可能感兴趣的:(Ruby,pascal)