Почему этот код не использует функцию питания C ++ напрямую? Может кто-нибудь помочь мне с функцией питания в этом коде? [закрыто]

Эта проблема состоит в том, чтобы вывести единственное целое число, рассчитанное количество возможных комбинаций:

int power(int a, int n)
{
  if (n == 0)
    return 1;
  // else
  if (n % 2 == 0) {
    int temp = power(a, n / 2);
    return temp * temp;
  }
  // else
  return a * power(a, n - 1);
}
-8
задан Boann 7 August 2019 в 12:45
поделиться

1 ответ

Эта функция использует технику, названную exponentation путем обработки на квадрат .

Это - особенно эффективный способ оценить питание для аргументов целочисленного типа. Стандарт C функция использует аргументы с плавающей точкой, и стандарт C не требует точного результата, даже если аргументы с плавающей точкой представляют целые числа.

В C++, хотя Вы можете , вероятно , полагаются на одну из перегрузок std::pow, который берет аргументы целочисленного типа и бросает результат согласно Вашему созданию необходимых проверок размера. , Но снова даже стандарт C++ делает не , требуют, чтобы самый лучший результат был возвращен (cf. std::sqrt под IEEE754), хотя можно было обоснованно расценить std::pow функция, которая не возвращает корректный результат для интегральных аргументов, чтобы быть дефектной.

3
ответ дан 5 September 2019 в 20:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: