递归求x^n 感觉没错呀,可是好像成了死循环了,求大神指导
c语言吧
全部回复
仅看楼主
level 4
#include"stdio.h"
double pow(double x,int n)
{
double s;
if(n==0)
s=1;
else if(n<0)
s=pow(x,n+1)*x;
else
s=pow(x,n-1)*x;
return s;
}
void main()
{
double x,s;
int n;
printf("请输入待求函数x^n");
scanf("%lf,%d",&x,&n);
s=pow(x,n);
printf("输出x^n的值%lf\n",s);
}
2013年12月17日 10点12分 1
level 13
double s;改成static double s;
楼主的代码真丑陋,学的谭浩强吧
2013年12月17日 10点12分 2
一语道破天机
2013年12月17日 13点12分
哈哈哈
2013年12月18日 12点12分
level 11
当n<0的时候,应该是不断除以x,其他就没问题了。
2013年12月17日 10点12分 3
谢谢,我去实践一下
2013年12月17日 12点12分
为什么还是不行,
2013年12月17日 12点12分
level 6
这个Pow方法返回的值就是number^i,如果按照我这样写代码就简介很多,当然方法的返回值应该改成long...
2013年12月17日 10点12分 4
有点高深,不太明白为什么<=1就都返回一了呢
2013年12月17日 12点12分
因为i!=1的时候这个递归就会继续调用自己;当i<1时,这个方法返回1,这样Pow(number,1)就结束了,调用它的那个方法Pow(mumber,2)就结束并返回number*1;等Pow(number,2)返回,Pow(number,3)就结束了并返回number*number*1...直到Pow(number,i)结束并返回值,这样这个递归就结束了。
2013年12月17日 13点12分
好棒,谢谢啦
2013年12月18日 12点12分
1