c - 两个数字之间的乘法
问题描述
我有一个任务来构建一个将 2 个整数相乘且不使用 * 或“-”的函数。我只能使用“+”“/”和“%”。
我注意到很多人都在使用移位方法,但我不能不使用,因为我们还没有学习它。
尽管我可以在没有 1 个 while 循环的情况下轻松做到这一点,但诀窍是它应该具有 n log n 或 log n 运行时效率。
没有列表也没有数组,尽管我没有看到任何使用它们的方法。
有什么可行的方法吗???
解决方案
这个算法是 O(nlogn)。分而治之。
double Multiply(int n, double x) {
if (n == 0)
return 0.0;
if (n == 1)
return x;
double a = Multiply(n/2, x);
if ((n%2) == 1)
return x + a + a;
return a + a;
}
注意:代码未经测试。我无法在 iPad 上编译 C 代码。
推荐阅读
- python - Pandas:为什么即使选择了正确的列数,点积也不起作用?
- ios - 视频的平面列表不会在本机反应中呈现
- python - Python:TypeError:* 之后的 det() 参数必须是可迭代的,而不是 Line
- mongodb - 如何获取 MongoDB 文档的哈希值
- javascript - 使用 Multer,express js 处理嵌套的 formdata 对象
- node.js - 在 Node/Express API 上的连接之间保持数据
- r - 在 R 中使用 ggplot 的 facet_wrap 的流持续时间曲线?
- react-native - 从组件导航到屏幕反应原生
- laravel - Laravel - 验证正确的格式
- python - 如何在 virtualenv 中安装 Python 3.6.x?