2004-gre-cs-practice-book.pdf/Q34

Материал из DISCOPAL
Перейти к: навигация, поиск

Вопрос: Q34-4c9f66

Для следующего кода выполняемость любого блока в условных ветках показано на графе потока управления, с вероятностью выполнения условия на ребрах.

Например, логическое выражение if_condition принимает значение true в половине случаев.

  do
  {
   U;
   if (if_condition)
   {
     V;
     if (break_condition)
       break;
   }
   else
     W;
   X;
   } while (loop_condition);
   Y;

Какое ожидаемое количество раз выполняется U?

Ответы

  • 0.5
  • 1
  • 1.5
  • Правильный ответ: 2
  • Больше 10

Объяснение

В оригинале было 2/3 вместо 1/3, но это точно ошибка. Если поправить, как мы сделали, то

from sympy import symbols, summation, oo, simplify
i = symbols('i')
expr = summation(((1/2+1/2 + 1/2*1)*1/3)**i, (i, 0, oo))
simplified_expr = simplify(expr)
print(simplified_expr)

Можно размышлять примерно — ну точно больше 1, и меньше 10 — там если расходимость будет то сразу бесконечность. Ну и на глаз прикинуть, что 1.5 — маловато.

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

[ Хронологический вид ]Комментарии

(нет элементов)

Войдите, чтобы комментировать.