Главная /
Программирование /
Какое утверждение является инвариантом для следующего фрагмента программы (т.е. из справедливости утверждения до выполнения фрагмента программы вытекает справедливость утверждения после выполнения)? Предполагается, что значение переменной n неотрицательно
Какое утверждение является инвариантом для следующего
фрагмента программы (т.е. из справедливости утверждения
до выполнения фрагмента программы вытекает справедливость утверждения
после выполнения)? Предполагается, что значение переменной
n
неотрицательно.
double r, x; int n;
. . .
r *= x*x;
r /= ((n+1)*(n+2));
n += 2;
вопрос
Правильный ответ:
Утверждение
r == xn/n!
,
где восклицательным знаком обозначен факториал числа n
.
Утверждение
r == xn/((n+1)*(n+2))
.
Утверждение
r == (x+n)/n!
,
где восклицательным знаком обозначен факториал числа n
.
Утверждение
r == xn/(n+1)!
.
Сложность вопроса
66
Сложность курса: Программирование
84
Оценить вопрос
Комментарии:
Аноним
Это очень намудрённый вопрос intuit.
09 окт 2017
Аноним
Большое спасибо за помощь по интуиту.
01 мар 2017
Другие ответы на вопросы из темы программирование интуит.
- # Камень, отпущенный с высоты 6-го этажа, падает на землю примерно за 2 сек. За какое примерно время упадет камень с высоты 12-го этажа (в 2 раза большей)? Сопротивлением воздуха пренебречь.
- # Сколько раз в алгоритме Гаусса будет выполнена операция перестановки местами двух строк (с изменением знака одной из них) при приведении к ступенчатому виду следующей матрицы: 0 1 2 3 4 5 6 7 1 2 3 4
- # Какие переменные располагаются в языке C/C++ в статической памяти?
- # Является ли индуктивной функция, которая последовательности коэффициентов многочлена по убыванию степеней ставит в соответствие пару чисел: (степень многочлена, интеграл многочлена по отрезку [0, 1])?
- # Алгоритм быстрой сортировки использует вспомогательную функцию partition, которая разделяет массив на 3 части: в начале элементы, меньшие либо равные медиане, затем медиана, в конце элементы, большие либо равные медиане. Рассмотрим следующую реализацию функции partition: void partition(double* a, int n, int *m) { if (*m != 0) // Ставим медиану в начало swap(&(a[0]), &(a[*m])); double x = a[0]; // Значение медианы int i = 0; int j = n; while (j-i > 1) { // Инв: a[1], a[2], ..., a[i] <= x // a[j], a[j+1], ..., a[n-1] >= x if (a[i+1] <= x) { ++i; } else if (a[j-1] >= x) --j; } else { ++i; --j; swap(&(a[i]), &(a[j])); } } if (i > 0) swap(&(a[0]), &(a[i])); *m = i; } Правильна ли подобная реализация, или она может привести к катастрофическому замедлению алгоритма быстрой сортировки в некоторых случаях?