这就是他们得到的答案。
我正在尝试使其适用于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代表什么吗?还是我需要它?我看不到用途。
基本上在C和C ++中,if / while的条件是“如果表达式非零”。
因此,在这种情况下,您需要:
while (exp != 0)
和
if ((exp & 1) != 0) // If exp is odd
您还希望避免使用关键字base:)
base
我还没有检查算法是否可以在C#中运行,但这至少应该可以帮助您更进一步。