2004-gre-cs-practice-book.pdf/Q30

Материал из DISCOPAL
Перейти к: навигация, поиск

Вопрос: Q30-4c9f66

Рассмотрите следующую функцию

  double power(double base, unsigned int exponent)
  {
  if (exponent == 0)
    return 1.0;
  else
    if (even(exponent))
      return power(base*base, exponent/2);
    else
      return power(base*base, exponent/2)*base;
  }


Сколько умножений выполняется в результате использования вызова power(5.0, 12)?

  • В эту сумму не включайте деления.

Ответы

  • 12
  • 9
  • 8
  • 6
  • Правильный ответ: 5

Объяснение

Исходники — вопрос 30 на 25 странице книги «2004-gre-cs-practice-book.pdf»

  • Рекурсивное быстрое возведение в степень.
  • Два умножения на единичный бит в экспоненте, одно умножение на нулевой.
  • 12 = 110 → 2+2+1 = 5

[ Хронологический вид ]Комментарии

(нет элементов)

Войдите, чтобы комментировать.