编程题目:实现快速幂算法并计算幂次方
题目描述:
编写一个C++程序,实现一个名为myPower的函数,该函数使用快速幂算法来计算一个数x的n次方。然后,在main函数中,从用户那里获取底数x和指数n,并调用myPower函数来计算结果,最后打印出x的n次方的值。
具体要求:
- 函数
myPower:- 输入参数:一个
double类型的底数x,一个int类型的指数n。 - 返回值:
double类型,表示x的n次方的结果。 - 功能:使用快速幂算法来计算幂次方。如果
n为0,则返回1;如果n为负数,则返回1 / myPower(x, -n)(即x的|n|次方的倒数)。否则,通过递归地将问题分解为更小的子问题来计算幂次方。
- 输入参数:一个
main函数:- 从标准输入读取底数
x(double类型)和指数n(int类型)。 - 调用
myPower函数计算x的n次方,并将结果存储在变量result中。 - 打印出
x的n次方的值,格式为“x的n次方是: [结果]”。
- 从标准输入读取底数
输出格式:
- 首先,程序应提示用户输入底数
x和指数n,并分别读取这两个值。 - 然后,计算
x的n次方,并打印结果,格式为“x的n次方是: [结果]”。结果应保留到小数点后至少6位(或根据实际需要进行格式化)。
源代码:
#include <iostream>
using namespace std;
double myPower(double x, int n) {
if (n == 0) return 1;
if (n < 0) return 1 / myPower(x, -n);
double half = myPower(x, n / 2);
return n % 2 == 0 ? half * half : half * half * x;
}
int main() {
double x;
int n;
cout << "请输入底数x: ";
cin >> x;
cout << "请输入指数n: ";
cin >> n;
double result = myPower(x, n);
cout << "x的n次方是: " << result << endl;
return 0;
}
运行截图:

1万+

被折叠的 条评论
为什么被折叠?



