方法一、每一行都是组合数,逐行输出

#include <iostream>
using namespace std;

//习题8.1杨辉三角形
long long jiecheng(long long x){
    if(x==0||x==1)return 1;
    return jiecheng(x-1)*x;
}

long long C(long long x,long long i){
    return jiecheng(x)/(jiecheng(x-i)*jiecheng(i));
}

void line(int x){//若这一行的底为x,则这一行有x+1个数字
    int output;
    for(int i=0;i<x+1;i++){
        output=C(x,i);
        printf("%5d",output);
    }
    printf("\n");
}
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++)line(i);
    return 0;
}

☆方法二、用递归的思想

//习题8.1杨辉三角形
int main(){
    int n;
    scanf("%d",&n);
    int output[30][30];
    for(int i=0;i<n;i++){
        for(int j=0;j<=i;j++){
            if(j==0||i==j)output[i][j]=1;
            else output[i][j]=output[i-1][j-1]+output[i-1][j];
            printf("%5d",output[i][j]);
        }
        printf("\n");
    }
    return 0;
}