Pascal三角形
作者:bakari 时间:2012.8.4
Pascal三角形又称杨辉三角形,是多项式系数的一种规律展示,最早是由我国数学家杨辉发现,比Pascal早200多年。
下面简单地总结一些其算法。
一、数组计算法:
1、公式推导:
这个很简单,看图就知道
由图可得公式:a[ i ][ j ] = a[i - 1] [j - 1] + a[i - 1][ j ]
2、代码展示:
1 void YangHuiTriangleArray(int Row) 2 { 3 for (int i = 0;i < Row; i++) 4 { 5 for (int j = 0;j <= i; j++) 6 { 7 if (j == 0 || j == i) //置1条件 8 a[i][j] = 1; 9 else 10 a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; 11 cout<<a[i][j]<<" "; 12 } 13 cout<<endl; 14 } 15 }
二、递归法
这个是最好想到的,这一步的实现需要上一步作为铺垫。
废话不多说,直接来看代码
1 long GetElement(int Row,int Col) 2 { 3 if (0 == Col || Row == Col) //递归出口 4 return 1; 5 else 6 return GetElement(Row - 1,Col - 1) + GetElement(Row - 1,Col); 7 } 8 9 void YangHuiTriangleRecur(const long n) 10 { 11 for(int i = 0;i < n; i++) 12 { 13 for(int j = 0; j <= i; j++) 14 cout<<GetElement(i,j)<<" "; 15 cout<<endl; 16 } 17 }
三、数学推导法
本方法主要借助数学推导,比起前两种性能要好很多
令X10= 1 ;则
X20 = 1 , X21 = X20 * (2 - 1 + 1)/1 = 2 , X22 = X21 * (2 - 2 + 1)/2 = 1;
X30 = 1 , X31 = X30 * (3 - 1 + 1)/1 = 3 , X32 = X31 * (3 - 2 + 1)/2 = 3 , X33 = X32 * (3 - 3 + 1)/3 = 1;
.........
Xij = 1, Xij+1 = Xij * (i - j + 1)/j , ...... , Xii = 1;
大体就是这么个推导法,下面看代码:
1 void YangHuiTriangle(int RowN) 2 { 3 for (int i = 0;i < RowN;i++) 4 { 5 for (int j = 0;j <= i;j++) 6 { 7 if (j == 0) //第一个数前面要输出相应的空格 8 { 9 for (int k = 1;k < RowN - i; k++) 10 cout<<" "; 11 } 12 else 13 cout<<" "; //数与数之间输出相应空格 14 printf("%3d",ComputeNextInteger(i,j)); //输出下一个数 15 } 16 cout<<endl; 17 } 18 } 19 20 int ComputeNextInteger(int iRow ,int iRowIndex) 21 { 22 long p = 1; 23 for (int i = 1;i <= iRowIndex; i++) 24 p = p * (iRow - i + 1)/i; //根据公式计算每一个数; 25 return p; 26 }
见图:
OK!希望多多烧香!
作者:公众号「Linux云计算网络」,专注于Linux、云计算、网络领域技术干货分享
出处:https://www.cnblogs.com/bakari/archive/2012/08/04/2623269.html
本站使用「署名 4.0 国际」创作共享协议,转载请在文章明显位置注明作者及出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?