可以看上图先了解一下杨辉三角是什么样子,我这里呢是利用了,它的排列组合的性质:第n行的第m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。因为用了阶乘所以输入行数不要超过20。
代码的实现:
#include//阶乘 long int factorial(int a){ long int p=1; for(int i = 1;i <= a;i++){ p *= i; } return p; } //组合C(n,m),n为下标,m为上标 int Cn(int n,int m){ if(m == 1){ return 1; } else{ return factorial(n-1)/(factorial(m-1)*factorial(n-m)); } } //杨辉三角 int main(){ int n; printf("输入行数:"); scanf("%d",&n); for(int i = 1;i <= n;i++){ for(int j = 0;j < n-i;j++){ printf(" "); } for(int k = 0;k < i;k++){ printf("%6d",Cn(i,k+1)); } putchar('n'); } return 0; }
运行结果:



