【问题标题】:How to multiple two positive integers without multiplication or division operators or loops如何在没有乘法或除法运算符或循环的情况下将两个正整数相乘
【发布时间】:2016-04-25 15:42:02
【问题描述】:

我需要在不使用乘法或除法运算符、任何内置乘法函数或循环的情况下将两个整数相乘。

我已经设法用循环进行乘法运算,但我不知道如何在没有循环的情况下这样做。

这是我的循环解决方案:

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;
}

【问题讨论】:

  • 您接受双精度数,但您的方法仅在 y 是整数时才有效。你真的需要支持浮点数吗?您也没有正确支持负数。
  • 不,我没有,假设我正在处理整数
  • 然后让你的方法接受整数类型,而不是浮点类型。
  • 正确......
  • 递归算作循环?

标签: c#


【解决方案1】:

你可以在你的函数中做类似下面的事情

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

        var result = test.Sum();

您的“y”变量将是整数计数。但是我不确定您到底在寻找什么

【讨论】:

    【解决方案2】:

    我需要在不使用乘法或除法运算符、任何内置乘法函数或循环的情况下将两个整数相乘。

    阅读您问题的条件,我认为这里的想法是使用更智能的计算方式,例如按位运算

    根据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;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-23
      • 2019-06-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-13
      • 2011-05-26
      • 2017-06-14
      • 1970-01-01
      相关资源
      最近更新 更多