论坛首页 编程语言技术论坛

Pascal三角形

浏览 1829 次
锁定老帖子 主题:Pascal三角形
精华帖 (0) :: 良好帖 (0) :: 新手帖 (11) :: 隐藏帖 (4)
作者 正文
   发表时间:2009-09-26  
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()

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics