- 基础练习 杨辉三角形
- 问题描述
- 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
- 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
- 下面给出了杨辉三角形的前4行:
- 1
- 1 1
- 1 2 1
- 1 3 3 1
- 给出n,输出它的前n行。
- 输入格式
- 输入包含一个数n。
- 输出格式
- 输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。
- 样例输入
- 4
- 样例输出
- 1
- 1 1
- 1 2 1
- 1 3 3 1
//杨辉三角,公式求解,运用递归,
#include <iostream>
using namespace std;
//阶乘
int fun(int b){
if(b==0){return 1;
}
if(b==1){return 1;
}
if(b>1){
return b*fun(b-1);
}
}
int f(int a,int b){
int sum=1;
// if(a==b){return 1; //此处a=b不能作为跳出判断条件,此时return 1,主函数中1/m!,导致结果为0
// }
if(a==0){return 1;
}
if(a==1){return 1;}
for(int i=1;i<=b;i++){
sum=sum*a;
a--;
}
return sum;
}
int main(int argc, char** argv) {
int N,n,m;
cin>>N;
for(n=0;n<N;n++){
for(m=0;m<=n;m++){
cout<<f(n,m)/fun(m)<<" ";
//cout<<f(n,m);
}
cout<<endl;
}
using namespace std;
//阶乘
int fun(int b){
if(b==0){return 1;
}
if(b==1){return 1;
}
if(b>1){
return b*fun(b-1);
}
}
int f(int a,int b){
int sum=1;
// if(a==b){return 1; //此处a=b不能作为跳出判断条件,此时return 1,主函数中1/m!,导致结果为0
// }
if(a==0){return 1;
}
if(a==1){return 1;}
for(int i=1;i<=b;i++){
sum=sum*a;
a--;
}
return sum;
}
int main(int argc, char** argv) {
int N,n,m;
cin>>N;
for(n=0;n<N;n++){
for(m=0;m<=n;m++){
cout<<f(n,m)/fun(m)<<" ";
//cout<<f(n,m);
}
cout<<endl;
}
return 0;
}