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

Материал из DISCOPAL
Перейти к: навигация, поиск
 
(не показаны 2 промежуточные версии 2 участников)
Строка 1: Строка 1:
{{reserve-task|[[Участник:Tiniakov.ad|Tiniakov.ad]] 18:48, 16 декабря 2024 (UTC)}}
 
 
 
== Вопрос: Q01-08c765 ==
 
== Вопрос: Q01-08c765 ==
  
<i>Тут вставьте перевод вопроса.
+
Рассмотрим следующий псевдокод рекурсивной функции <tt>goAgain</tt>
Используйте [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 возможности разметки],
+
включая формулы и т.п, если будут графы — посмотрите как задать их текстом https://wiki.4intra.net/Graphviz .
+
Если код — теги «code-pascal», «code-c» или «code-python».
+
  
Старайтесь нетривиальные понятия, особенно незнакомые вам, найти ссылку на википедию и вставить (нейросети лажают!).
+
<code-pascal>
Это важно, чтобы найти корректный перевод (то, что в википедии, или на худой конец — точно массово гуглится).
+
// assume N is a positive integer
 +
integer goAgain ( integer a, integer N )
 +
begin
 +
if ( N == 1 ) then
 +
  return a
 +
else
 +
  return a + goAgain ( a, N/2 )
 +
end
 +
</code-pascal>
  
Потом конечно сотрите инструкции, которые тут курсивом.</i>
+
Каков порядок роста в зависимости от N количества рекурсивных вызовов функции goAgain?
  
 
=== Ответы ===
 
=== Ответы ===
<i>Если ответы простые, однострочные, используйте простой способ задания ответов списком, типа так
 
(префикс «Правильный ответ:» — это дословно, для правильного ответа, неважно, какой он будет в списке)</i>
 
 
* Правильный ответ: тут реально правильный ответ
 
* неправильный ответ
 
* еще какой-то неправильный ответ
 
* еще какой-то неправильный ответ
 
* еще какой-то неправильный ответ
 
 
<i>Если ответы длинные, многострочные, или там графы, используйте
 
[https://wiki.4intra.net/MediawikiQuizzer/ru#.D0.9E.D1.82.D0.B2.D0.B5.D1.82.D1.8B способ задания ответов разделами],
 
Но такое очень редко встречается. </i>
 
  
 +
* Правильный ответ: <m>\theta(\log N)</m>
 +
* <m>\theta(N)</m>
 +
* <m>\theta(N \log N)</m>
 +
* <m>\theta(N^2)</m>
 +
* <m>\theta(N^3)</m>
  
 
=== Объяснение ===
 
=== Объяснение ===
<i>Сначала заполните номер страницы с этим вопросом
 
 
{{cstest-source|2011-gre-cs-practice-book.pdf|14|1}}
 
{{cstest-source|2011-gre-cs-practice-book.pdf|14|1}}
  
Если все сделаете правильно, по ссылке выше будет открываться правильная страница в правильном PDFе.
+
Не уверен что тут действительно нужно какое-либо объяснение, но все же.
 
+
Ну и наконец, вики-разметкой напишите ваше понимание, почему правильный ответ — правильный, а [[2004-gre-cs-practice-book.pdf/Q16|неправильные варианты — неправильны]].
+
Тут тоже могут быть полезны [[2004-gre-cs-practice-book.pdf/Q03|ссылки на википедию]],
+
решение вами [[2004-gre-cs-practice-book.pdf/Q12|рекуррентных уравнений в sympy]].
+
  
</i>
+
* <m>\theta(\log N)</m> — верно, поскольку функция каждый раз вызывает себя же с аргументом N вдвое меньшим, чем приняла на вход. В итоге к примеру для N = 16 функция будет вызвана со следующими аргументами: 16, 8, 4, 2, 1 — всего 5 раз, что соответствует ассимптотике <m>\theta(logN)</m>.
 +
* <m>\theta(N \log N)</m> — данная ассимптотика предполагает более чем линейный рост количества вызовов функции относительно N, что очевидно не так.
 +
* <m>\theta(N)</m> — данная ассимптотика предполагает рост количества вызовов функции линейно зависимый от N. Однако это очевидно не так.
 +
* <m>\theta(N^2)</m> — данная ассимптотика предполагает квадратичный рост количества вызовов функции в зависимости от N, что очевидно не верно.
 +
* <m>\theta(N^3)</m> — данная ассимптотика предполагает кубический рост количества вызовов функции в зависимости от N, что очевидно не так.
  
{{question-ok|}}
+
{{question-ok|[[Участник:StasFomin|StasFomin]] 19:16, 16 декабря 2024 (UTC)}}

Текущая версия на 19:17, 16 декабря 2024

Вопрос: Q01-08c765

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

// assume N is a positive integer
integer goAgain ( integer a, integer N )
begin
 if ( N == 1 ) then
  return a
 else
  return a + goAgain ( a, N/2 )
end

Каков порядок роста в зависимости от N количества рекурсивных вызовов функции goAgain?

Ответы

  • Правильный ответ:

Объяснение

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

Не уверен что тут действительно нужно какое-либо объяснение, но все же.

  •  — верно, поскольку функция каждый раз вызывает себя же с аргументом N вдвое меньшим, чем приняла на вход. В итоге к примеру для N = 16 функция будет вызвана со следующими аргументами: 16, 8, 4, 2, 1 — всего 5 раз, что соответствует ассимптотике .
  •  — данная ассимптотика предполагает более чем линейный рост количества вызовов функции относительно N, что очевидно не так.
  •  — данная ассимптотика предполагает рост количества вызовов функции линейно зависимый от N. Однако это очевидно не так.
  •  — данная ассимптотика предполагает квадратичный рост количества вызовов функции в зависимости от N, что очевидно не верно.
  •  — данная ассимптотика предполагает кубический рост количества вызовов функции в зависимости от N, что очевидно не так.