2016-04-25 13 views
-3

我需要乘以两个整数而不使用乘法或除法运算符,任何内置的乘法函数或循环。如何多个两个正整数没有乘法或除法运算符或循环

我设法用一个循环做乘法,但我没有得到如何不循环。

这里是我的解决方案有一个循环:

Public Double(Double x, Double y) 
{ 
Double Result; 
Result =0; 
If(x==0 || y==0) 
{ 
    Result = 0; 
    } 
else 
{ 
    for(int i=0; i<=y; i++) 
    { 
    Result = Result + x; 
    } 
} 
     return Result; 
} 
+1

您接受双打,然而如果'y'是一个整数你的方法才有效。你真的*需要支持浮点数吗?您也不适当地支持负数。 – Servy

+0

不,我认为我正在处理整数 – toxic

+0

然后让你的方法接受一个整数类型,而不是浮点类型。 – Servy

回答

0

你可以不喜欢下面的功能

 List<int> temp = new List<int>(); 
     temp.AddRange(Enumerable.Repeat(x,y)); 

     var result = test.Sum(); 

在您的“Y”变量将是一个整数计数。但我不确定你在找什么

0

我需要乘以两个整数而不使用乘法或除法运算符,任何内置的乘法函数或循环。

读你的问题的情况下,我认为这里的想法是要用于计算一个更聪明的方式,例如位运算

基于对How to perform multiplication, using bitwise operators?的答案,我建议你的问题了以下解决方案:

public int MultiplyBitwise(int a, int b) 
    { 
     int product = 0; 
     while (b > 0) 
     { 
      product += ((b & 1) > 0) ? a : 0; 
      a <<= 1; 
      b >>= 1; 
     } 

     return product; 
    } 
相关问题