#include<stdio.h> #define M 10 int factor(int m) ...{ int mult=1,i; for(i=1;i<=m;++i) mult*=i; return mult; }//计算阶乘; /*为什么不用递归方法求值可参考《切忌滥用递归函数》*/ int pascal(int m,int n) ...{ return factor(m)/(factor(n)*factor(m-n)); }//利用公式计算每一个位置上元素的值; int main(void) ...{ int i,j; for(i=0;i<M;++i) ...{ for(j=0;j<i+1;++j) printf("%d ",pascal(i,j)); putchar(''); } system("pause"); return0; }//funtion way
2:利用二维数组实现:
#define M 10 #include <stdio.h> int main() ...{ int pascal[M][M]; int i,j; printf("1 "); printf("1 1 "); pascal[0][0]=1; pascal[0][1]=1; for(i=1;i<M-1;++i)//注意将运算后得到的值存储以便下次运算使用; ...{ pascal[i][0]=1; printf("%d ",pascal[i][0]); //the 1st num 1 for(j=1;j<i+1;++j) ...{ pascal[i][j]=pascal[i-1][j-1]+pascal[i-1][j];//计算中间里面的值; printf("%d ",pascal[i][j]); } pascal[i][j]=1; printf("%d ",pascal[i][j]); //the last num 1; } system("PAUSE"); return0; }