gpt4 book ai didi

java - 使用递归分治算法计算整数幂

转载 作者:行者123 更新时间:2023-12-01 07:25:45 26 4
gpt4 key购买 nike

我实现了一个递归函数来查找 m^n(m 的 n 次幂)。

现在我想实现相同的功能,但将问题分成两个相等的部分,例如

m^n = m^(n/2) * m^(n/2) = ... (对于偶数 n,例如 m^2、m^4、m^6 )。

通过下面的实现,如果我给出 m = 2 和 n = 4,我的输出是 4,而它应该是 16

public class Recursion {

public static void main(String[] args) {
System.out.println(pow(2, 4));
}

public static long pow(long m,long n) {
if (n > 0)
return m * pow(m, ((n/2) - 1) * pow(m, ((n/2) - 1)));
else
return 1;
}

}

最佳答案

public static long pow(long m,long n)
{
if (n <= 0) {
return 1; // Be lazy first
} else if (n % 2 == 1) {
return m * pow(m, n - 1); // Normal slow strategy
} else { // n even
long root = pow(m, n / 2); // Do not evaluate twice
return root * root;
}
}

关于java - 使用递归分治算法计算整数幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25268370/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com