杨辉三角形(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;
}
比较而言,下面一种方法更简洁,函数化实现需要很多次调用函数和多次循环计算。
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;
}
比较而言,下面一种方法更简洁,函数化实现需要很多次调用函数和多次循环计算。
相关文章推荐
- 杨辉三角形(pascal triangle)的两种不同思路的C实现方法
- 两种不同的方法实现js对checkbox进行全选和反选
- 用两种不同的方法来实现一个两列布局,其中左侧部分宽度固定、右侧部分宽度随浏览器宽度的变化而自适应变化
- 总结python实现父类调用两种方法的不同
- 两种不同的方法实现js对checkbox进行全选和反选
- 生产者与消费者问题是典型的同步问题。这里简单介绍两种不同的实现方法。
- Android两种不同的方法去实现图像的放大与缩小
- java两种启动线程方法根本不同,Thread继承和实现Runable接口
- 【JPA】两种不同的实现jpa的配置方法
- 详谈排序算法之交换类排序(两种方法实现快速排序【思路一致】)
- Singleton的两种不同实现方法.
- 两种不同的方法来实现一个两列布局
- 进制转换的一种思路两种实现方法
- Android中两种不同的方法实现实时更新时间,是显示时间和系统时间同步
- Java 计算器的实现(两种不同思路)
- 关于vector的erase删除操作的两种不同方法,在linux与visual studio的实现讨论
- java反射中两种方法的不同(反射能否实现对类的私有方法的调用)
- 程序跳过UAC研究及实现思路(两种方法,现在可能都不行了)
- C#实现Web文件上传的两种方法
- 【Java并发编程】之十五:并发编程中实现内存可见的两种方法比较:加锁和volatile变量