I00001 杨辉三角

杨辉三角国际上称为Pascal三角形。

杨辉三角与菲波拉契数列也是有关系的,看以下的图就知道了。

这里给出来两种方法的实现,一是使用二维数组来存储杨辉三角,二是使用一维数组来存储杨辉三角并且一边计算一边输出结果。

使用一维数组作为存储,实现打印杨辉三角,需要的技巧更高一些。

本文插图来自维基百科。

#include <stdio.h>

// 使用二维数组的杨辉三角程序
void pascal1()
{
    int n, i, j;

    scanf("%d", &n);
    int pascal[n][n];

    for(i=0; i<n; i++)
        for(j=0; j<=i; j++) {
            if(j == 0 || j == i)
                pascal[i][j] = 1;
            else
                pascal[i][j] = pascal[i-1][j] +pascal[i-1][j-1];
        }

    for(i=0; i<n; i++) {
        for(j=0; j<=i; j++)
            printf("%d ", pascal[i][j]);
        printf("
");
    }
}

// 使用一维数组的杨辉三角程序
void pascal2()
{
    int n, i, j;

    scanf("%d", &n);
    int pascal[n];

    for(i=0; i<n; i++) {
        for(j=i; j>=0; j--) {
            if(j == i || j == 0)
                pascal[j] = 1;
            else
                pascal[j] += pascal[j-1];
            printf("%d ", pascal[j]);
        }
        printf("
");
    }
}

int main(void)
{
    pascal1();
    pascal2();

    return 0;
}

两种打印杨辉三角的程序,分别输入阶数5和6,其输出结果如下:

5
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

原文地址:https://www.cnblogs.com/tigerisland/p/7564927.html