java - 以最佳方式计算 x 的 x 次方

标签 java c++ c algorithm logic

<分区>

Possible Duplicate:
The most efficient way to implement an integer based power function pow(int, int)

我知道这个问题很简单,但我的要求是我想以最佳优化方式计算 x 的幂 x,其中 x 是一个非常大的数。我不是数学怪人,因此需要一些帮助来找出可能的最佳方法。

在java中,我们可以使用BigInteger,但是如何优化代码呢?有什么具体的优化方法吗?

同样使用递归会不会x的值很大,导致代码变慢,容易出现栈溢出错误?

例如:457474575 提升到权力 457474575

最佳答案

您确实意识到您的示例的答案将是一个非常大的数字,即使对于 BigInteger 也是如此?它将有 3961897696 个数字!

如果您不需要精确度,那么处理非常大的数字的最佳方法是使用它们的对数。要取 x 的 x 次方,请取 x 的对数并将其乘以 x。如果您需要将它转换回 x exp(x),除非在这种情况下它几乎肯定会溢出。

关于java - 以最佳方式计算 x 的 x 次方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6294434/

相关文章:

java - 套接字编程 : Delay

java - 自定义 KeyboardView 上的 keyOutputText 属性不输出任何文本

c++ - cin.getline() 没有按预期工作

c++ - 如何用空项目启动 MFC?

c++ - C 预处理器作为语言创建工具的长度/限制是什么?我在哪里可以了解更多关于这些的信息?

c - 当用户使用 GTK+2 在窗口外单击时如何关闭窗口?

java - 用于混音的 buildShortArray 代码

java - Flume 1.2.0 自定义源码

c++ - 静态类成员在动态库中与主应用程序不同

c++ - 为什么很少有人输入 const 正确的代码? const 正确的代码会编译得更好/更快吗?