2004-gre-cs-practice-book.pdf/Q30 — различия между версиями
Материал из DISCOPAL
StasFomin (обсуждение | вклад) (Новая страница: « == Вопрос: Q30-4c9f66 == <i>Тут вставьте перевод вопроса. Используйте [https://wiki.4intra.net/Help:%D0%A4%D0%BE%D1%80…») |
StasFomin (обсуждение | вклад) |
||
(не показана одна промежуточная версия этого же участника) | |||
Строка 1: | Строка 1: | ||
− | |||
== Вопрос: Q30-4c9f66 == | == Вопрос: Q30-4c9f66 == | ||
+ | Рассмотрите следующую функцию | ||
− | < | + | <code-c> |
− | + | 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; | ||
+ | } | ||
+ | </code-c> | ||
− | |||
− | |||
− | |||
− | + | Сколько умножений выполняется в результате использования вызова <tt>power(5.0, 12)</tt>? | |
− | + | * В эту сумму не включайте деления. | |
− | + | ||
− | + | ||
− | * | + | |
− | + | === Ответы === | |
− | + | * 12 | |
− | + | * 9 | |
+ | * 8 | ||
+ | * 6 | ||
+ | * Правильный ответ: 5 | ||
+ | === Объяснение === | ||
+ | {{cstest-source|2004-gre-cs-practice-book.pdf|25|30}} | ||
− | == | + | * Рекурсивное быстрое возведение в степень. |
− | + | * Два умножения на единичный бит в экспоненте, одно умножение на нулевой. | |
− | + | * 12 = 110 → 2+2+1 = 5 | |
− | + | {{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