一尘不染

基于C#高效算法整数的幂函数

algorithm

这就是他们得到的答案。

我正在尝试使其适用于C#,但是我正在将int与bool以及所有其他这些东西进行比较。。。而且我不知道为什么他们要进行比较&1并不意味着是真的吗?这有什么意义。看来效率不高。

 int ipow(int base, int exp) 
 { 
     int result = 1; 
     while (exp) 
     { 
         if (exp & 1) 
             result *= base; 
         exp >>= 1; 
         base *= base; 
     }

return result;

}

我在比较中正在执行exp ==,但那个1仍然存在,我不知道是否需要它。

有人知道“ if(exp&1)”中的1代表什么吗?还是我需要它?我看不到用途。


阅读 281

收藏
2020-07-28

共1个答案

一尘不染

基本上在C和C ++中,if / while的条件是“如果表达式非零”。

因此,在这种情况下,您需要:

while (exp != 0)

if ((exp & 1) != 0) // If exp is odd

您还希望避免使用关键字base:)

我还没有检查算法是否可以在C#中运行,但这至少应该可以帮助您更进一步。

2020-07-28