#include
float rpow(float x,int n)
{
// 这里初始化下
float t = 0;
// 如果等于0,则返回1
if (n==0)
{
return 1;
}
if(n>0)
t=x*rpow(x,n-1);
else
t=(1/x)*rpow(x,n+1);
return t;
}
int main()
{
float x,t; int n;
printf("请输入x和n");
scanf("%f",&x);
scanf("%d",&n);
t=rpow(x,n);
printf("%f",t);
return 0;
}
结果如下:
#include
#include
float rpow(float x, int n)
{
if(n>0)
return x*rpow(x,n-1);
else if(n==0)
return 1;
else
return rpow(x,n+1)/x;
}
int main()
{
float c,m;
int b;
printf("请输入一个数和所要求得次方数:\n");
scanf("%f %d",&c,&b);
m=rpow(c,b);
printf("%f",m);
}
是不是每次得出的结果都是1?
哈哈,因为最终n都会等于0的,那时候你令t=1,然后return t,当然返回1咯。
float rpower(float x, int n)
{
if (n == 0)
return 1;
else if (n > 0)
return x * rpower(x, n-1);
else
return 1/x * rpower(x, n+1);
}