2004-gre-cs-practice-book.pdf/Q30 — различия между версиями

Материал из DISCOPAL
Перейти к: навигация, поиск
(Новая страница: « == Вопрос: Q30-4c9f66 == <i>Тут вставьте перевод вопроса. Используйте [https://wiki.4intra.net/Help:%D0%A4%D0%BE%D1%80…»)
 
 
(не показана одна промежуточная версия этого же участника)
Строка 1: Строка 1:
 
 
== Вопрос: Q30-4c9f66 ==
 
== Вопрос: Q30-4c9f66 ==
 +
Рассмотрите следующую функцию
  
<i>Тут вставьте перевод вопроса.
+
<code-c>
Используйте [https://wiki.4intra.net/Help:%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 возможности разметки],  
+
  double power(double base, unsigned int exponent)
включая формулы и т.п, если будут графы — посмотрите как задать их текстом https://wiki.4intra.net/Graphviz .
+
  {
Потом конечно сотрите инструкции, которые тут курсивом.</i>
+
  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>
  
=== Ответы ===
 
<i>Если ответы простые, однострочные, используйте простой способ задания ответов списком, типа так
 
(префикс «Правильный ответ:» — это дословно, для правильного ответа)</i>
 
  
* Правильный ответ: тут реально правильный ответ
+
Сколько умножений выполняется в результате использования вызова <tt>power(5.0, 12)</tt>?
* неправильный ответ
+
* В эту сумму не включайте деления.
* еще какой-то неправильный ответ
+
* еще какой-то неправильный ответ
+
* еще какой-то неправильный ответ
+
  
<i>Если ответы длинные, многострочные, или там графы, используйте
+
=== Ответы ===
[https://wiki.4intra.net/MediawikiQuizzer/ru#.D0.9E.D1.82.D0.B2.D0.B5.D1.82.D1.8B способ задания ответов разделами],
+
* 12
Но такое очень редко встречается. </i>
+
* 9
 +
* 8
 +
* 6
 +
* Правильный ответ: 5
  
 +
=== Объяснение ===
 +
{{cstest-source|2004-gre-cs-practice-book.pdf|25|30}}
  
=== Объяснение ===
+
* Рекурсивное быстрое возведение в степень.
<i>Сначала заполните номер страницы с этим вопросом
+
* Два умножения на единичный бит в экспоненте, одно умножение на нулевой.
{{cstest-source|2004-gre-cs-practice-book.pdf|тут-номер-страницы-с-вопросом-30|30}}
+
* 12 = 110 → 2+2+1 = 5
  
Ну и наконец, вики-разметкой напишите ваше понимание, почему правильный ответ — правильный.</i>
+
{{question-ok|[[Участник:StasFomin|StasFomin]] 16:05, 14 декабря 2024 (UTC)}}
  
{{question-ok|}}
+
[[Категория:Вызов функций]]

Текущая версия на 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