用递归算法求2的n次方Java
时间: 2023-08-05 21:02:51 浏览: 210
好的,我来为您展示用递归算法求2的n次方的Java代码:
```
public static int powerOfTwo(int n) {
if (n == 0) {
return 1;
} else {
return 2 * powerOfTwo(n-1);
}
}
```
在这个递归函数中,当参数n为0时,返回1,因为2的0次方为1。否则,返回2乘以递归调用powerOfTwo(n-1)的结果,直到n为0为止。
相关问题
java从键盘输入实数x和正整数n利用递归算法求x的n次方
这道题意为用递归算法求出正整数n的x次方。具体实现如下:
1.递归终止条件:当n等于0时,返回1。
2.递归处理:令y等于n的一半,将x作为参数调用自身得到结果r,若n为偶数,则返回r*r,若n为奇数,则返回r*r*x。
代码实现如下:
public static int power(int x, int n) {
if (n == 0) {
return 1;
}
int y = n / 2;
int r = power(x, y);
if (n % 2 == 0) {
return r * r;
} else {
return r * r * x;
}
}
调用 power(2, 3),则返回 8。
给定a和n,用二分法设计出求a的n次方的算法。要求仅使用乘法计算不可以直接用指数运算,并尽量减少乘法的计算次数,用java实现
以下是Java代码实现:
```
public static double pow(double a, int n) {
if (n == 0) {
return 1;
} else if (n == 1) {
return a;
} else if (n % 2 == 0) {
double temp = pow(a, n / 2);
return temp * temp;
} else {
double temp = pow(a, (n - 1) / 2);
return a * temp * temp;
}
}
```
该算法的思路是利用指数的二分性质,将a的n次方分解成a的n/2次方的平方(n为偶数),或者是a的(n-1)/2次方的平方再乘a(n为奇数),不断递归缩小指数n的规模,直到n变为1或0时返回结果。这样可以大大减少乘法的计算次数。
阅读全文