今天我自己写了个程序,这个程序的作用是这样的,
按下述递归定义编写一个计算幂级数的递归函数,
当n=0时x的n次方根等于0,
当n>0时,x的n次方等于x乘以X的(n-1)次方根。
题目就是这样,以下这是我自己写的,但可能有错误希望大家指证,且改进,谢谢啊
float pro(int n,int x)
{
float f,p=1;
if(n<0)
{
printf("n<0,dataerror!");
}
if(x<0)
{
printf("n<0,dataerror!");
else if(n==0) f=1;
for(n;n--;n>=1)
p=p*x;
f=pro(p)*x;
return(f);
}main()
{
int m,q;
float y;
printf("Please enter a number of m\n");
scanf("%d",&m);
printf("Please enter a number of q\n");
scanf("%d",&q);
y=pro(m,q);
printf("x^n=%f",y);
}
请大家批评改正,谢谢。
还有请教我下在电脑上x的n次方根怎么表示,和这么输入是这样吗x^n

解决方案 »

  1.   

    1. float pro(int n,int x) 既然n 和 x 都是 int的,为什幺返回 有用float?
    2. 需要考虑一个特殊情况 0^0float pro(int n,int x) 

    float f,p=1; 
    if(n <0) 

      printf("n <0,dataerror!"); 

    if(x == 0 && n == 0) 

      printf("0^0,dataerror!"); 
    }
    else if(n==0) return 1;
    else if(n==1) return x; 
    else return x*pro(n-1,x);

      

  2.   

    对于你,一看就是初学者,
    建议
    1,多写注释
    2,练好基础(多看书),你看你的 for ,在去看看书上怎么说的答案参考1楼
      

  3.   

    那个for的()里面  顺序就写的不对
    而且 干嘛要用循环啊。