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,nint 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)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)