杨辉三角形的不同表示

Posted on 2020-07-21 11:09  黑炽  阅读(169)  评论(0编辑  收藏  举报
#include<stdio.h>
#define Line 10
/*
第一种 就是 用二维数组来表示
    每行第一个元素和最后一个都是1
    从第三行开始,中间元素都是上一行同一列以及其左侧元素之和
*/
int main(void){
    int a[Line][Line];

    a[0][0] = 1;
    for (int i = 1; i < Line; i++){a[i][0] = 1; a[i][i] = 1;}
    for (int i = 2; i < Line; i++){
        for (int j = 1; j < i; j++){
            a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
        }
    }

    printf("杨辉三角形如下:\n");
    for (int i = 0; i < Line; i++){
        for (int t = 0; t < Line * 2 - i * 2; t++) printf(" ");
        for (int j = 0; j <= i; j++){
            printf("%4d", a[i][j]);
        }
        printf("\n");
    }

    return 0;
}
//这里的x从0开始,而y从1开始
int f(int x, int y){//求杨辉三角中第x行第y列的值
    int t;
    
    if (y == 1 || y == x + 1) return 1;//x行的第1或最后一列,都为1
    t = f(x - 1, y - 1) + f(x - 1, y);
    
    return t;
}