请编写函数,求任意实数的任意整数次幂。
函数原型
double Power(double x, int n);
说明:参数 x 为底数,n 为指数。若参数正确,则函数值为 x 的 n 次幂。若参数不正确,则报告错误:“不正确的参数!”,函数值为 0。
提示:
- x8=x7⋅x
- x−8=x−7/x
- 00 和 0−2 无意义
裁判程序
#include <stdio.h>
double Power(double x, int n);
int main()
{
double x;
int n;
scanf("%lg%d", &x, &n);
printf("%.10g\n", Power(x, n));
return 0;
}
/* 你提交的代码将被嵌在这里 */
要求:不要调用 pow 等函数,不要使用循环语句。用递归方法完成函数的设计。
输入样例1
0 -2
输出样例1
不正确的参数!
0
输入样例2
0 5
输出样例2
0
输入样例3
-5.4 5
输出样例3
-4591.65024
输入样例4
2.53 -326
输出样例4
3.825692827e-132
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
代码如下
double Power(double x, int n)
{
if(x==0){
if(n<=0) printf("不正确的参数!\n");//当x=0且n<=0时输出
return 0;
}
if(n==0)//很容易知道n=0时不管底数为什么都等于0,此处为断点!
return 1;
else if(n>0)
{
return x*Power(x,n-1);//n>0时,通过多次进行n-1最终达到断点条件
}
else if(n<0)
return 1/x*Power(x,n+1);//同上,不过此处n<0,当然就是n+1了
}