当前位置: 首页 > 面试题库 >

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

陈开宇
2023-03-14
问题内容

这就是他们得到的答案。

我正在尝试使其适用于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:)

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



 类似资料:
  • 问题内容: Java中还有其他方法可以计算整数的幂吗? 我现在使用,但是它返回一个,这通常是很多工作,并且在您只想使用s 时看起来不太干净(那么幂也会总是产生)。 有没有像Python 一样简单的东西? 问题答案: 整数只有32位。这意味着其最大值为。如您所见,对于非常小的数字,您很快就会得到不能再用整数表示的结果。这就是使用的原因。 如果要任意整数精度,请使用。但这当然效率较低。

  • 比较函数是一个函数,它接受两个参数a和b,并返回一个描述其顺序的整数。如果a小于b,则结果为负整数。如果a大于b,则结果为某个正整数。否则,a和b相等,结果为零。 此函数通常用于参数化来自标准库的排序和搜索算法。 实现字符的比较功能相当容易;只需减去参数: 这是因为通常假设两个字符之间的差适合一个整数。(注意,此假设不适用于的系统) 这种技巧无法用于比较整数,因为两个整数之间的差通常不适合一个整数

  • 本文向大家介绍用C语言求幂函数和指数函数的方法,包括了用C语言求幂函数和指数函数的方法的使用技巧和注意事项,需要的朋友参考一下 C语言pow()函数:求x的y次方(次幂) 头文件: pow() 函数用来求 x 的 y 次幂(次方),其原型为: pow()用来计算以x 为底的 y 次方值,然后将结果返回。设返回值为 ret,则 ret = xy。 可能导致错误的情况: 如果底数 x 为负数并且指数

  • 但是,我从geeksforgeeks中找到了另一个解决方案,它只使用对数除法来确定值是否可以用两个整数的幂表示。 谁能给我解释一下上面的对数解吗?提前谢了。

  • 本文向大家介绍Java基于高精度整型实现fibonacci数列的方法,包括了Java基于高精度整型实现fibonacci数列的方法的使用技巧和注意事项,需要的朋友参考一下 本文以实例形式讲述了Java基于高精度整型实现fibonacci数列的方法,分享给大家供大家参考之用。具体方法如下: 希望本文所述对大家的Java程序设计有所帮助。

  • 本文向大家介绍c语言基于stdarg.h的可变参数函数的用法,包括了c语言基于stdarg.h的可变参数函数的用法的使用技巧和注意事项,需要的朋友参考一下 C语言编程中有时会遇到一些参数个数可变的函数,本文详细讲解了可变参数函数的实现原理,分享给大家 在开始学习C语言的函数的时候,我们就知道函数的参数个数应该是在函数声明的时候就指定的,这一点我们没有任何疑问。但是不知道大家有没有注意到我们的pri

  • 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 示例 1: 输入: 1 输出: true 解释: 20 = 1 示例 2: 输入: 16 输出: true 解释: 24 = 16 示例 3: 输入: 218 输出: false 实现如下: /** * @param {number} n * @return {boolean} */ var isPow

  • 我想在输入后计算整数数组(大小,如:数组[1000])中的元素数量,而无需在输入时手动计数(使用,即=传递给scanf的参数数)。虽然int数组没有以空结尾,并且不能像或那样使用,并且没有像这样的用于int数组的可用函数,是否可以编写一个C程序来提示用户输入任意数量的数字,并且程序将计算它们(传递给scanf()的总参数)并使用数组或指针打印最大值?