我想在 Java 中仅使用加法、减法和比较来递归地找到两个数字的乘法。所以,我用谷歌搜索,找到了满足问题要求的 Egyptian Algorithm
。
但是,我不确定在到达基本情况
后如何找到乘法结果。
例子:
13 x 30
1 -- 30
2 -- 60
4 -- 120
8 -- 240 //we stop here because the double of 8 is larger than 13
为了找到结果,我们将 左列
中等于 13 的数字相加,即 1+4+8
,另一方面,我们将其相反的数字相加从 右列
中,它们是 30+120+240 = 390
,这就是结果。
但是现在如何以编程方式完成最后一部分?如何检查要添加哪些号码?我希望你们明白我的意思。只需要提示。
最佳答案
这是解决问题的伪代码:
function egyptian(left, right)
prod := 0
while (left > 0)
if (left is odd)
prod := prod + right
left := halve(left)
right := double(right)
return prod
基本上,与其等到最后,更容易在创建模板时检查模板的每一行,如果它属于输出则求和。我在 my blog 讨论了这个算法.
关于java - 在java中实现埃及算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13178438/