在visual studio中返回long double值

时间:2015-03-19 04:30:06

标签: c++ c

我在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

问题是什么?

2 个答案:

答案 0 :(得分:4)

您需要返回 myPow(base, exp-1)

这是一种非常差的计算能力的方法。查找涉及平方的算法。

答案 1 :(得分:0)

如果您将函数中else语句下的所有内容更改为:

  

while(exp&gt; 0){power * = base; --exp; } return power;

应该有效