两个问题:
一个是power内的,既然用了嵌套就不需要用循环,用了循环就不用嵌套。
二是输入的格式,m是double,那么格式要用%lf,而不是%f,否则不能正确获得输入值。
另外,按照原程序中scanf的写法,输入时一定要以“,”分隔两数(不能以空格分隔),比如:5,2。
程序修改如下(都没考虑0的0次方这种情况):
#include
double power(double x,int n)
{ //int a;
//for(a=1;a<=n;a++) 用递归就不需要循环
if(n==0) return 1;//0次方
else return x*power(x,n-1);//递归为x*x的n-1次方
// printf("%f",power(x,n));不用输出了,否则又调用一次power
}
/* 如果要用循环,可以用下面这段程序
double power(double x,int n)
{
double x_n = 1;
while(n--) x_n *= x;
return x_n;
}*/
int main()
{
double m;
int b;
scanf("%lf,%d",&m,&b);//m是double,所以要用%lf,而不是%f;输入时以“,”分隔两数
printf("%f", power(m,b));
}
//你看看我写的,你的递归的用法并不正确
#include
double power(double x,int n)
{
if(n==0)
return 1;
else
return x*power(x,n-1):
}
main()
{
double m;
int b;
scanf("%f,%d",&m,&b);
printf("%f", power(m,b));
}
一定要用嵌套吗?
double power(double x,int n)
{
int a,sum=1;
for(a=0;a<=n;a++)
sum *= x;
printf("%f",x);
}
或者
double power(double x,int n)
{
if(n==0)
return 1;
else
return x*power(x,n-1):
}