我试图找到一种在java中计算 N ^ N 的有效方法。因为大N的结果非常大,我使用BigInteger作为结果数据类型,N是整数。如果N变大,说 N = 10000000 那么花费更多时间来计算结果。是否有任何有效的方法可以在一秒钟内计算出来。
答案 0 :(得分:8)
处理程序中的数字日志N ln(N)
。随着N
的增长,相对于N ln(N)
的{{1}}缩小的速度越来越快。
实现这一点的方式取决于您需要做什么。如果您不需要程序中的N^N
,那么只要忘记它并在程序输出后在纸上进行。当你处理大数字时,它的日志/数量级/它具有的数字位数(所有这些都是同义词)是大多数基本信息。如果您的计划输出N^N
,您会报告答案大约为x
,这就是您可以说的全部内容。
如果您的计划中确实需要e^x
,那么您仍应计算N^N
。但是,你将不得不想出一些创造性的方法,从x = ln(N^N) = N ln(N)
转到你的程序实际可以使用的某个值。