100-71

1245 단어
71. 수치의 정수 차방(숫자, 연산).
제목: 함수 더블 파워(double base, int exponent)를 실현하고base의exponent 차원을 구합니다.넘침을 고려할 필요가 없다.
분석: 이것은 보기에 매우 간단한 문제이다.아마도 많은 사람들이 제목을 본 후 30초 후에 다음과 같은 코드를 쓸 것이다: 더블파워 (더블베이스, int exponent)
      double result = 1.0;       for(int i = 1; i <= exponent;++i)             result *= base;       return result; }
아이디어:
상기 코드는 적어도 하나의 문제가 있다. 입력한exponent는 int형의 수치이기 때문에 정수일 수도 있고 마이너스일 수도 있다.상술한 코드는exponent가 정수인 상황만 고려했다.
다음에 우리는 코드를 다음과 같이 바꾸었다.
bool g_InvalidInput = false;
 
double Power(double base, int exponent)
{
    g_InvalidInput = false;
 
    if(IsZero(base) && exponent < 0)
    {
        g_InvalidInput = true;
        return 0.0;
    }
 
    unsigned int unsignedExponent = static_cast<unsigned int>(exponent);
    if(exponent < 0)
        unsignedExponent = static_cast<unsigned int>(-exponent);
 
    double result = PowerWithUnsignedExponent(base, unsignedExponent);
    if(exponent < 0)
        result = 1.0 / result;
 
    return result;
}
 
double PowerWithUnsignedExponent(double base, unsigned int exponent)
{
      double result = 1.0;
      for(int i = 1; i <= exponent; ++i)
            result *= base;
 
      return result;
}

좋은 웹페이지 즐겨찾기