整数相乘
来源:互联网 发布:淘宝独立设计师店铺 编辑:程序博客网 时间:2024/06/10 01:57
分析
- 直接进行二进制计算,复杂度为
O(n2) - 采用如下的方法:
x∗y={2(x∗⌊y/2⌋),x+2(x∗⌊y/2⌋),if y is evenif y is odd
递推思路
上面的公式我们也可以变形为
如果当前除以2的这个数是奇数,那么就代表有一个单位没有被包含在下一次的计算中,所以最终计算的时候需要加上,如上面公式所示,所以这里的结果是13+26+104 = 143。
递归思路
就如上面公式一样,进行递归处理,举例如下:
假如上面的
代码如下:
int multiply(int x, int y){ if (y == 0) return 0; int z = multiply(x, y / 2); if (y % 2 == 0) return 2 * z; else return x + 2*z;}
总结
通过上面的分析我们可以发现将公式稍微变形;就可以得出递推和递归两种形式的方法,其本质的区别在于一个需要分解后然后回溯。另一个却是一步一步逼近最终答案。分析发现其实我们的复杂度并没有下降。(进一步补充乘法的最佳复杂度)
阅读全文
0 0
- 整数相乘
- 整数相乘
- 大整数相乘问题
- 两个长整数相乘
- 大整数相乘算法
- 大整数相乘算法!
- 大整数相乘
- 大整数相乘算法
- 大整数相乘
- 大整数相乘
- 大整数相乘
- 大整数相乘
- 整数的大数相乘
- 大整数相乘
- 大整数相乘算法
- 大整数相乘
- 大整数相乘
- 大整数相乘
- java IO各种类介绍
- JSP脚本的9大内置对象
- vue绘制环形图
- Failed to install Tomcat7 service 解决
- 问题 D: 八进制
- 整数相乘
- shell——select (说明和select:not found)
- VMware安装Ubuntu添加显示器分辨率的方法
- TensorFlow中board可视化问题
- leaf开源服务器第二节-分析之配置文件说明及服务器运行
- LAMP环境搭建
- 2017.11.08离线赛总结
- ES6-函数的扩展-name属性
- 正式发布 Android 架构组件 1.0 稳定版 | 附带中文介绍视频