分治法求x的n次方的JAVA程序

分治法求x的n次方的JAVA程序,第1张

以下是使用分治法求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)。

int m,k,n

int A[m][k]

int B[k][n]

int C[m][n]

这样定义是不可以的

在c中,数组的长度必须是固定的常量,而不能是变量,这个在数组的开始应该是说过的

道理

在c中,程序运行开始的时候,会为变量申请内存空间,如果不知道申请空间的大小,是不可以的

如果不知道数组的长度,也就是说不知道数组要占多少内存空间,是没办法运行程序的

#include <stdio.h>

void minmax(int array[], int begin, int end, int &min, int &max, int &count)

{

int mid = (begin + end)/2

if (begin == end)

{

count++

if (array[mid] <min) {

min = array[mid]

} else {

if (array[mid] >max)

max = array[mid]

count++

}

return

}

minmax(array, begin, mid, min ,max, count)

minmax(array, mid + 1, end, min ,max, count)

}

void main()

{

int array[10] = {9,8,7,6,5,4,3,2,1,0}

int min = array[0], max = -1, count = 0

minmax(array, 0,9,min,max,count)

printf("min = %d, max = %d, count = %d\n", min,max,count)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7934088.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存