#include <stdio.h>
#define N 12
long Combi(int n,int r)
{
long p=1;
for (int i=1;i<=r;i++)
{
p=p*(n-i+1)/i;
}
return p;
}
int main()
{
int i,n,r,t;
for (n=0;n<=N;n++)
{
for (r=0;r<=n;r++)
{
if (r==0)
{
for (i=0;i<=(N-n);i++)
{
printf(" ");
}
}
else
{
printf(" ");
}
printf("%3d",Combi(n,r));
}
printf("\n");
}
}
巴斯卡三角
形中的 nCr 可以使用以下這個公式來計算,以避免階乘運算時的數值溢位:
n C r = [(n-r+1)/r] * n C r-1
n C 0 = 1