/*
输出任意阶数的杨辉三角
思路:
我们先打印一个杨辉三角:
然后找一下规律:
第0行:(a+b)^0 = 1
第1行:(a+b)^1 = a + b
第2行:(a+b)^2 = a^2 + 2a*b + b^2
第3行:(a+b)^3 = a^3 + 3a*(b^2) + 3(a^2)*b + b^3
第4行:(a+b)^4 = a^4 + 4(a^3)*b + 6(a^2)*(b^2) + 4a*(b^4) + b^4
由此我们可知最两边的数字是1,而中间的数字等于上一行与它有相同列数的数字和这个数字前面的一个数字的和,例如:4 = 1 + 3;6 = 3 + 3;
#include <stdio.h>
//輸出楊輝三角
int main()
{
int i, j;
int n;
printf("請輸入楊輝三角的階數:");
scanf("%d",&n);
int yh_delta[n][n+1];
//让第一列和最后一列的数字变成1
for(i = 0; i < n; i++)
{
yh_delta[i][0] = 1;
yh_delta[i][i] = 1;
}
//中间数字变成上一行中与之列数相同和小一的数字相加
for(i = 1; i < n; i++)
{
for(j = 1; j < i; j++)
{
yh_delta[i][j] = yh_delta[i-1][j-1] + yh_delta[i-1][j];
}
}
//打印结果
for(i = 0; i < n; i++)
{
for(j = 0; j <= i; j++)
{
printf("%6d",yh_delta[i][j]);
}
printf("\n");
}
}