递归算一个数的幂(简单)解决方案

递归算一个数的幂(简单)C/C++ code#includestdio.hdouble power(double n,int p)int main(void){double

递归算一个数的幂(简单)

C/C++ code
#include<stdio.h>double power(double n,int p);int main(void){    double x,xpow;    int exp;    printf("Enter:\n");    while(scanf("%lf%d",&x,&exp)==2)    {        xpow=power(x,exp);        printf("%.3g to he power %d is %.5g",x,exp,xpow);    }    printf("bye!\n");    return 0;}double power(double n,int p){    double pow=1;    int i;    if(n==0)        pow=0;    if(p>0)    {   pow=n*power(n,p-1);    }        else if(p=0)        pow=1;    else if(p<0)        pow=1/(n*power(n,p+1));//测试时输入一个整数和一个负数,比如输入5 -1;结果错误;应该怎样实现?        return pow;}


[解决办法]
else if(p=0)
pow=1;
else if(p<0)
pow=1/(n*power(n,p+1));//测试时输入一个整数和一个负数,比如输入5 -1;结果错误;应该怎样实现?

else if(p == 0)这里是 == 号,
pow=1/(n*power(n,p+1));//这里逻辑有错误~~第一遍循环,求倒数,第二遍循环再求倒数,相当求倒数的倒数

所以不能这么做,做好是都按正数的去做,算完后再判断p值求倒!
[解决办法]
C/C++ code
else if(p<0)    {        pow=(n*power(n,-p-1));//测试时输入一个整数和一个负数,比如输入5 -1;结果错误;应该怎样实现?        pow = 1 / pow ;    }
[解决办法]
探讨

C/C++ code

else if (p == 0)