杨辉三角是什么?
杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年。杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合.
![](https://i-blog.csdnimg.cn/blog_migrate/5daf890cf447fa607c8d5da87db27617.png)
C语言实现
每行第一位数和最后一位数都为1,其余的数为正上方和左边数之和。
代码如下:
二维数组实现:
#include<stdio.h>
#include<string.h>
int main(int argc,char*argv[])
{ int j,i;
int arr[10][10]={0};//定义一个二维数组 数组大小可改变 可用scanf输入大小值
for( i=0;i<10;i++)
{
arr[i][0]=1;
for( j=1;j<i;j++)
{
arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
}
}
// arr[i][j]=1;
for(i=0;i<10;i++)
{
for(j=0;j<i;j++)
{
printf("%d ",arr[i][j]);//循环打印
}
printf("\n");
}
return 0;
}
递归函数实现:
#include <stdio.h>
long getadd(int a,int b) //递归函数
{
return (b == 1||b == a) ? 1 : getadd(a - 1,b - 1) + getadd(a - 1,b);
}
int main()
{
int i,j,n = 0;
printf("输入所需杨辉三角的行数(1-20):");
scanf("%d",&n); //输入要打印的行数
for(i = 1;i <=n; i++)
{
for(j = 1;j <= i;j++)
{
printf("%6ld",getadd(i,j)); //使用递归函数
}
printf("\n");
}
return 0;
}