我正在尝试寻找一种在Java中高效计算N^N的方法。由于当N较大时结果会非常大,因此我使用了BigInteger作为我的结果数据类型,并且N是整数。如果N变得很大,比如N=10000000,那么计算结果需要更长的时间。是否有一种有效的方法可以在一秒内计算出它。
我正在尝试寻找一种在Java中高效计算N^N的方法。由于当N较大时结果会非常大,因此我使用了BigInteger作为我的结果数据类型,并且N是整数。如果N变得很大,比如N=10000000,那么计算结果需要更长的时间。是否有一种有效的方法可以在一秒内计算出它。
N ln(N)
。随着N
的增长,相对于N^N
,N ln(N)
的大小会越来越快地缩小。N^N
,那么只需忘记它,在程序输出后在纸上计算即可。当您处理如此大的数字时,其对数/数量级/位数(所有这些都是同义词)是最重要的信息。如果您的程序输出x
,则应报告答案约为e^x
,这就是您能说的全部。N^N
,那么您仍然应计算x = ln(N^N) = N ln(N)
。但是,您将不得不想出一些创造性的方法,从x
转换为您的程序实际可以使用的某个值。