杨辉三角纯数学C语言实现

#include<stdio.h>
void main()
{
long int fuc(int,int);/*在此声明一个函数fuc(int,int),用它来实现计算每一行中,除去第0列外的其它元素的值,即二项式系数。*/
long int a[8][8];
int i,j;
for(i=0;i<8;i++)
a[i][0]=1;
/*使每一行的第一列元素,提前赋值为1。其实,在这里我们做了这样的假设,第1行到第k行的行标以次是0,1,2,3,4......(k-1)
每行的第1位到第k位元素从左往右依次被称为第0列,第1列,第2列......第(k-1)列*/
for(i=1;i<=7;i++)
for(j=1;j<=i;j++)
a[i][j]=fuc(i,j);/*除第0行外,每一行除第0列以外的其它元素,都可以利用组合数的公式,求解出其二项式展开式的常数项的值。因此,需要调用函数fuc(int,int)*/
for(i=0;i<8;i++)
{
for(j=0;j<=12-i;j++)
printf("   ");
for(j=0;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
}


}
long int fuc(int i,int j)/*由杨辉三角的规律可知,除第0行及每行的第0列元素外,其他每个元素都是,i自乘i自减1以后的(例如i*(i-1)*(i-2)*(i-3),且所有相乘数的个数与j的值相同,把最后乘数的值看做分母p),同理,即可解除其分子的值,最后用分母除以分子,我们就得到了元素a[i][j](其中,i>=1,j>=1)的值。*/
{
int n=i,m=j,p=1,q=1,k;
long int s;
for(k=0;k<j;k++)
{
p=p*(n--);
q=q*(m--);

}
s=p/q;
return(s);
}

猜你喜欢

转载自blog.csdn.net/u012751110/article/details/48228373
今日推荐