设计一个递归函数,求x的n次幂,其中n为非须整数。在main函数中输入x和一个整数n,输出x的n次幂。c++
时间: 2024-05-12 19:13:09 浏览: 71
可以使用标准库中的 pow 函数来求解浮点数的幂,但是要求 n 为非负整数。如果 n 是非负整数,可以直接使用 pow 函数来计算。如果 n 不是非负整数,则需要使用递归来计算。
递归函数的基本思路是,将 n 分成整数部分和小数部分,然后递归计算 x 的整数次幂和小数次幂,最后将它们相乘得到 x 的 n 次幂。
以下是递归函数的实现:
```c++
#include <iostream>
#include <cmath>
using namespace std;
double power(double x, int n) {
if (n == 0) return 1.0;
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;
cin >> x >> n;
cout << pow(x, n) << endl;
cout << power(x, n) << endl;
return 0;
}
```
输入一个浮点数 x 和一个整数 n,分别使用 pow 函数和递归函数计算 x 的 n 次幂,并输出结果。如果 n 是负数,则递归函数会自动处理。
相关问题
设计一个递归函数,求x的n次幂,其中n为非须整数。在main函数中输入x和一个整数n,输出x的n次幂。
可以通过以下递归函数实现:
```c++
double power(double x, int n) {
if (n == 0) {
return 1.0;
}
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;
}
}
```
这个函数将n分为n/2和n-n/2两部分,然后递归计算x的n/2次幂。如果n是偶数,则将结果平方即可;否则,需要再乘上一个x。如果n是负数,则需要将x取倒数。
在main函数中,可以像下面这样使用该函数:
```c++
#include <iostream>
using namespace std;
int main() {
double x;
int n;
cout << "请输入x和n: ";
cin >> x >> n;
cout << x << "的" << n << "次幂是: " << power(x, n) << endl;
return 0;
}
```
设计一个递归函数,求x的n次幂,其中n为非须整数。在main函数中输入x和一个整数n,输出x的n次幂c++。
可以使用幂级数公式求解,具体实现如下:
```c++
#include <iostream>
using namespace std;
double power(double x, int n) {
if (n == 0) return 1;
if (n < 0) return 1 / power(x, -n);
double half = power(x, n / 2);
if (n % 2 == 0) return half * half;
else return half * half * x;
}
int main() {
double x;
int n;
cout << "请输入x和n:" << endl;
cin >> x >> n;
double result = power(x, n);
cout << x << "的" << n << "次幂为:" << result << endl;
return 0;
}
```
该递归函数的时间复杂度为$O(log_2n)$,可以较好地处理大数幂的情况。
阅读全文