什么是Pascal三角形?
Pascal三角形是由法国数学家布莱士·帕斯卡(Blaise Pascal)在17世纪中发现的一组数。该三角形的第n行(n≥0)由(n+1)个数构成,第一个和最后一个数为1,其它数为该数的前一行中处于它上方的两个数之和。例如,第4行的数为1 3 3 1,表示(x+y)3的展开系数。
如何用C语言打印Pascal三角形?
1.使用二维数组打印
使用二维数组打印Pascal三角形的思路是定义一个二维数组,然后使用双重循环来填充该数组。具体实现如下:
#include <stdio.h>
int main()
{
int rows, coef = 1;
printf("Enter the number of rows: ");
scanf("%d", &rows);
for(int i=0; i<rows; i++)
{
for(int space=1; space<=rows-i; space++)
printf(" ");
for(int j=0; j<=i; j++)
{
if(j==0||i==0)
coef = 1;
else
coef = coef*(i-j+1)/j;
printf("%4d", coef);
}
printf("\n");
}
return 0;
}
该程序使用了一个二维数组,定义为:
int pascal_triangle[rows][rows];
然后使用双重循环来填充该数组:
for (int i=0; i<rows; i++)
{
for(int j=0; j<=i; j++)
{
if(j==0||i==j)
pascal_triangle[i][j] = 1;
else
pascal_triangle[i][j] = pascal_triangle[i-1][j-1] + pascal_triangle[i-1][j];
}
}
最后使用双重循环来打印数组中的元素:
for(int i=0; i<rows; i++)
{
for(int j=0; j<rows-i-1; j++)
printf(" ");
for(int j=0; j<=i; j++)
printf("%d ", pascal_triangle[i][j]);
printf("\n");
}
完整的程序在运行时会提示用户输入行数,然后按照Pascal三角形的格式打印出相应的数字。运行结果如下:
Enter the number of rows: 6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
2.使用递归函数打印
另外一种打印Pascal三角形的方法是使用递归函数,具体实现如下:
#include <stdio.h>
int combination(int n, int r)
{
if(r==0 || r==n) return 1;
else return combination(n-1, r-1)+combination(n-1, r);
}
int main()
{
int rows;
printf("Enter the number of rows: ");
scanf("%d", &rows);
for(int i=0; i<rows; i++)
{
for(int space=1; space<=rows-i; space++)
printf(" ");
for(int j=0; j<=i; j++)
printf("%4d", combination(i,j));
printf("\n");
}
return 0;
}
该程序使用递归函数来计算每个元素的值:
int combination(int n, int r)
{
if(r==0 || r==n) return 1;
else return combination(n-1, r-1)+combination(n-1, r);
}
具体方法是根据组合公式Cnr=Cn-1r-1+Cn-1r来递归计算。
另外,该程序使用了一个嵌套的循环来打印Pascal三角形:
for(int i=0; i<rows; i++)
{
for(int space=1; space<=rows-i; space++)
printf(" ");
for(int j=0; j<=i; j++)
printf("%4d", combination(i,j));
printf("\n");
}
完整的程序在运行时会提示用户输入行数,然后按照Pascal三角形的格式打印出相应的数字。运行结果如下:
Enter the number of rows: 6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
总结
本文介绍了如何使用C语言来打印Pascal三角形。Pascal三角形是一个由法国数学家布莱士·帕斯卡在17世纪中发现的有趣的数学形式。该三角形的第n行(n≥0)由(n+1)个数构成,第一个和最后一个数为1,其它数为该数的前一行中处于它上方的两个数之和。
本文介绍了两种方法来打印Pascal三角形,分别是使用二维数组和递归函数。使用二维数组的方法先定义一个二维数组,然后使用双重循环来填充该数组,最后使用双重循环来打印数组中的元素。使用递归函数的方法先定义一个递归函数来计算每个元素的值,然后使用嵌套的循环来打印Pascal三角形。