2004-gre-cs-practice-book.pdf/Q30 — различия между версиями
Материал из DISCOPAL
StasFomin (обсуждение | вклад) |
StasFomin (обсуждение | вклад) |
||
Строка 34: | Строка 34: | ||
{{question-ok|[[Участник:StasFomin|StasFomin]] 16:05, 14 декабря 2024 (UTC)}} | {{question-ok|[[Участник:StasFomin|StasFomin]] 16:05, 14 декабря 2024 (UTC)}} | ||
+ | |||
+ | [[Категория:Вызов функций]] |
Текущая версия на 16:06, 14 декабря 2024
Вопрос: 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