您的位置:首页 > 其它

杨辉三角形(pascal triangle)的两种不同思路的C实现方法

2006-11-06 13:52 513 查看
杨辉三角形(pascal triangle),winxp+dev_c++4环境下实现:
1:利用公式函数化实现:


#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");


return 0;


} //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");


return 0;


}

比较而言,下面一种方法更简洁,函数化实现需要很多次调用函数和多次循环计算。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: