我在visual studio 2012中写了电源功能代码:
#include<stdio.h>
long double myPow( long double base, unsigned int exp);
int main(){
long double base, m;
unsigned int exp;
scanf("%Lf%u",&base ,&exp);
m=myPow(base, exp);
printf("%.3Lf",m);
//getch();
return 0;
}
long double myPow( long double base, unsigned int exp){
static long double power=1;
if (base==1)
return base;
if(exp==1)
return power*base;
else{
power*=base;
myPow(base,exp-1);
}
}
但vs中的输出始终为 -1。#IO 。
问题是什么?
答案 0 :(得分:4)
您需要返回 myPow(base, exp-1)
。
这是一种非常差的计算能力的方法。查找涉及平方的算法。
答案 1 :(得分:0)
如果您将函数中else语句下的所有内容更改为:
while(exp&gt; 0){power * = base; --exp; } return power;
应该有效