分治法求x的n次方的JAVA程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分治法求x的n次方的JAVA程序相关的知识,希望对你有一定的参考价值。
要求:用分治法求x的n次方,要求时间复杂度为Θ(lgn)。求给出JAVA的完整源程序
以下是使用分治法求x的n次方的Java程序:Copy code
public class Power
public static void main(String[] args)
double x = 2.0; // 底数
double n = 10; // 指数
double result = power(x, n);
System.out.println(x + " 的 " + n + " 次方为:" + result);
// 分治法求幂运算
public static double power(double x, double n)
if (n == 0) // n为0时,直接返回1
return 1;
double half = power(x, n / 2);
if (n % 2 == 0) // n为偶数时,两半乘起来即可
return half * half;
else // n为奇数时,需要多乘一次x
return half * half * x;
首先,在 main() 方法中定义了底数 x 和指数 n。然后调用 power() 方法求 x 的 n 次方,并将结果输出到屏幕上。
power() 方法使用了分治法来实现幂运算。当 n 是0时,直接返回1;否则将 n 分成两半,分别递归求出两半的幂,然后根据 n 是奇数还是偶数来计算结果,最后返回计算结果。
由于每次递归将 n 除以2,因此该算法的时间复杂度为 Θ(lgn)。 参考技术A 计算X的n次方
public static int power(int x, int n)
int y = 0;
if (n == 0)
y = 1;
else
y = power(x , n/2); //递归
y = y * y;
if (y % 2 == 1)
y = y * x;
return y;
追问
求主函数部分的程序啊,不胜感激,急用啊。。。。。。。
追答你随便写个main 调用一下不就得了
追问不会啊,求帮助啊。。。。。。。。。。。。。。
追答比如计算10的6次方
public static void main(Sting[] args)
int num = power(10,6);
System,out,print(num);
你还想要怎样
不是X的N次方吗??这样不就只能算一个吗,而且的出来的结果怎么是10000啊?、奇怪了。。。
追答不好意思 ,有一句代码打错了
if (y % 2 == 1) --> 把 y 改成n
以上是关于分治法求x的n次方的JAVA程序的主要内容,如果未能解决你的问题,请参考以下文章