一开始打算用递归函数,在利用杨辉三角的性质时,递归函数无法保留上一函数的数值,导致数据大量丢失。还是用二维数组储存来计算吧,简单粗暴。
#include"stdio.h"
int main()
{
int a[30][30];
int i,j,n;
scanf("%d",&n);
for(i=0;i<n;i++)
a[i][0]=a[i][i]=1;//各行最左边和最右边的数值都为一,所以提前赋值,便于后续利用性质
for(i=2;i<n;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];//杨辉三角的性质(最左边和最右边的数值已经提前赋值为一,无需带入)
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
if(i==j)
printf("%d\n",a[i][j]);//当数据为最右边时,换行
else
printf("%d ",a[i][j]);
}
}
return 0;
}