请使用 2 种方法,求解 x n。 (1)利用传统递归法求解该问题。 (2)使用二分法思想,结合递归方法求解该问题。用C++实现,给出完整代码
时间: 2024-02-03 21:11:41 浏览: 100
1. 利用传统递归法求解 x^n:
```cpp
#include <iostream>
using namespace std;
double power(double x, int n) {
if (n == 0) {
return 1;
}
double half = power(x, n / 2);
if (n % 2 == 0) {
return half * half;
} else if (n > 0) {
return half * half * x;
} else {
return half * half / x;
}
}
int main() {
double x;
int n;
cout << "请输入底数 x 和指数 n:" << endl;
cin >> x >> n;
cout << x << " 的 " << n << " 次方为:" << power(x, n) << endl;
return 0;
}
```
2. 使用二分法思想,结合递归方法求解 x^n:
```cpp
#include <iostream>
using namespace std;
double power(double x, int n) {
if (n == 0) {
return 1;
}
double half = power(x, n / 2);
if (n % 2 == 0) {
return half * half;
} else if (n > 0) {
return half * half * x;
} else {
return half * half / x;
}
}
double power2(double x, int n) {
if (n < 0) {
return 1 / power(x, -n);
} else {
return power(x, n);
}
}
int main() {
double x;
int n;
cout << "请输入底数 x 和指数 n:" << endl;
cin >> x >> n;
cout << x << " 的 " << n << " 次方为:" << power2(x, n) << endl;
return 0;
}
```
阅读全文