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
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.