我正在尝试找到一种在 Java 中计算 N^N 的有效方法。由于对于大 N,结果会非常大,因此我使用 BigInteger 作为我的结果数据类型,并且 N 是整数。如果 N 变大,比如 N=10000000,那么计算结果将花费更多时间。有什么有效的方法可以在一秒钟内计算出来。
最佳答案
在您的程序中处理数字的日志,即 N ln(N)
。随着 N
的增长,N ln(N)
相对于 N^N
的大小越来越快地缩小。
您实现它的方式取决于您需要做什么。如果您不需要程序中的 N^N
,那么只需忘记它并在程序输出后在纸上完成。当你处理这么大的数字时,它的对数/数量级/它拥有的位数(所有这些都是同义词)是最重要的信息。如果您的程序输出 x
,您会报告答案在 e^x
左右,这就是您能说的所有内容。
如果您的程序中确实需要 N^N
,那么您仍然应该计算 x = ln(N^N) = N ln(N)
。但是随后您将不得不想出一些创造性的方法来从 x
到您的程序实际可以使用的某个值。
关于java - 如何在 Java 中找到 'n' 提升到 'n',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16551640/