中国古代数学史曾经有自己光辉灿烂的篇章,而杨辉三角的发现就是十分精彩的一页。杨辉三角在编程实现中较为容易。最常见的算法便是用上一行递推计算;也有运用和组合的对应关系而使用阶乘计算的,然而后者速度较慢且阶乘容易溢出。编程的输出大多相类,此处并不过多添加截图。C、C++、C#、Java 语言之间的语法也大多相类,因此这里也不会将每一种算法都在这些语言中各实现一遍。要在这些语言的版本间修改,实际上只需注意一些简单的语法和函数名称的改变,如 C 的 int yh[M][M] 应改写为 Java 的 int[][] yh = new int[M][M]、C# 的 int[,] yh=new int[M,M];C printf 应使用 Java 的 System.out.print、C# 的 Console.Write 、C++ 中更智能的 cout 来替换。12345678910111213141516171819202122232425262728293031323334#include#includeusingnamespacestd;intmain(){constintn=15;constintm=2*n-1;intarr[n+1][m]={0};for(inti=0;i#include #include using namespace std;int a={0,1} , b;//这些随便改,想咋改咋改,用的是分类讨论!int main(){int n , i , j;cin >> n;for(i=2;i<=n+1;i++){if(i%2==0){for(j=1;j<=i;j++)b[j]=a[j]+a[j-1];for(j=0;j#includeintmain(){ints=1,h;//数值和高度inti,j;//循环计数scanf("%d",&h);//输入层数printf("1\n");//输出第一个1for(i=2;i<=h;s=1,i++)//行数i从2到层高{printf("1");//第一个1for(j=1;j<=i-2;j++)//列位置j绕过第一个直接开始循环//printf("%d",(s=(i-j)/j*s));printf("%d",(s=(i-j)*s/j));printf("1\n");//最后一个1,换行}getchar();//暂停等待return0;}默认求直角三角形,可通过注释的开关或使用编译器的 -D 定义开关调节等腰三角形和菱形输出。如果觉得复杂,可按照 define 使用的情况剔除因不符合 ifdef 条件从而未启用的代码之后阅读。这个算法创建了一个二维数组,并且通过上一行的数值求当前行。在反过来再次打印时,这个程序会使用以前算好的值,从而节省了重复迭代的时间。