如何設計算法以模擬乘法加法。輸入兩個整數。它們可以是零,正或負..算法通過加法模擬乘法
1
A
回答
7
def multiply(a, b):
if (a == 1):
return b
elif (a == 0):
return 0
elif (a < 0):
return -multiply(-a, b)
else:
return b + multiply(a - 1, b)
1
一些僞代碼:
function multiply(x, y)
if abs(x) = x and abs(y) = y or abs(x) <> x and abs(y) <> y then sign = 'plus'
if abs(x) = x and abs(y) <> y or abs(x) <> x and abs(y) = y then sign = 'minus'
res = 0
for i = 0 to abs(y)
res = res + abs(x)
end
if sign = 'plus' return res
else return -1 * res
end function
+0
這是一個非常簡單的解決方案..匹配我的解決方案..非常簡單 – KawaiKx
+1
根據KISS原則(Keep It Stupid Simple):)) –
1
val:= 0
bothNegative:=false
if(input1 < 0) && if(input2 < 0)
bothNegative=true
if(bothNegative)
smaller_number:=absolute_value_of(smaller_number)
for [i:=absolute_value_of(bigger_number);i!=0;i--]
do val+=smaller_number
return val;
0
mul(a,b)
{
sign1=sign2=1;
if(a==0 || b==0)
return 0;
if(a<0){
sign1=-1;
a=-a;
}
if(b<0){
sign2=-1;
b=-b;
}
s=a;
for(i=1;i<b;i++)
s+=a;
if(sign1==sign2)
return s;
else
return -s;
}
0
這個怎麼樣爲整數:
int multiply(int a, int b)
{
int product = 0;
int i;
if (b > 0)
{
for(i = 0; i < b ; i++)
{
product += a;
}
}
else
{
for(i = 0; i > b ; i--)
{
product -= a;
}
}
return product;
}
相關問題
- 1. 算法模擬乘法加法(僞代碼)
- 2. Prolog - 通過加法相乘
- 3. 如何模擬加入的Java乘法
- 4. 算法矩陣加法和乘法
- 5. 通過2no的乘法運算NaN。 JSP
- 6. 加法和乘法的數學運算
- 7. jQuery的加法和乘法計算
- 8. 如何在瑪麗模擬器中進行乘法和加法
- 9. 階乘算法
- 10. 通過矩陣乘法加密
- 11. 通過重複添加Verilog乘法
- 12. 通過算法
- 13. 混合左加乘數,有符號乘法的書本算法
- 14. 經濟模擬算法?
- 15. 模擬色盲的算法?
- 16. Dijkstra的算法模擬
- 17. Mysql乘法運算
- 18. 乘用算法Bitshifts
- 19. 模擬方法,通過另一個類
- 20. 需要精確的最小二乘法擬合算法
- 21. Java:算術與數組(乘法,加法,減法)
- 22. 爲什麼加法運算比乘法運算更快?
- 23. 鏈矩陣乘法:乘法算法不起作用
- 24. JavaScript的加法和乘法
- 25. 大會乘法和加法
- 26. 乘法和加法功能
- 27. 乘法Velocity模板
- 28. 矢量模乘法
- 29. Toom-Cook乘法算法實現
- 30. 用於乘法的揹包算法
問題是關於模擬乘法而不使用乘法函數...您可能只能使用加法.. – KawaiKx
這是一個遞歸函數。如果你仔細查看代碼,你會發現它只是做了添加(並且反覆調用自己)。 –
我認爲他的意思是你的' - '符號的乘法 – jemmanuel