Ну , для начала ( если ты не сохранила ее) после изменения кнопку возврата нажать пару раз в левом верхнем углу. Если изменила то никак, ну только если кэш этой версии не сохранился в Temp или не сохранился на другом носителе информации.
Представим, что мы знаем ответ на вопрос "чему равна сумма всех выписанных чисел при выполнении вызова F(n)" для всех n < k. Попробуем понять, как найти ответ для n = k.
Что делает F(n)? Читаем текст программы: сначала выводит n, а потом (если n > 0) запускает F(n - 1) и F(n - 3). Обозначим S(n) - сумму всех чисел после вызова F(n), тогда (при n > 0)
S(n) = n + S(n - 1) + S(n - 3)
Для неположительных n получаем, что S(n) = n (т.к. F(n) просто выводит n и завершает работу, не запуская никаких других F).
Остается только расписать, чему равно S(5)...
S(-2) = -2
S(-1) = -1
S(0) = 0
S(1) = 1 + S(0) + S(-2) = 1 + 0 - 2 = -1
S(2) = 2 + S(1) + S(-1) = 2 - 1 - 1 = 0
S(3) = 3 + S(2) + S(0) = 3 + 0 + 0 = 3
S(4) = 4 + S(3) + S(1) = 4 + 3 - 1 = 6
S(5) = 5 + S(4) + S(2) = 5 + 6 + 0 = 11
Ответ. 11.
______________
При исследовании рекурсивных алгоритмов бывает полезно понять, сколько вызовов функций делает программа (например, если рисовать дерево вызовов, это будет показывать количество "стрелочек" на этом дереве). Представим себе, что мы стали выполнять алгоритм на бумаге, попробуем понять, сколько чисел придется выписывать.
Если #(N) - число вызовов процедуры F при наивном вычислении F(N). Понятно, что #(N) = #(N - 1) + #(N - 3) (при N <= 0 #(N) = 1). Не задаваясь целью получить точную формулу для #(N), получим только оценку (на самом деле, весьма показательную).
Очевидно, что #(N - 1) >= #(N - 3), тогда #(N) >= 2 * #(N - 3).
Так как #(0) = 1, то #(3) >= 2 * #(0) = 2, #(6) >= 2 * #(3) >= 2^2, #(9) >= 2 * #(6) >= 2^3, и вообще #(3N) >= 2^N
Отсюда можно предположить, что #(N) растет не медленнее, чем 2^(N/3) >= 1.25^N. Если 1,25^N кажется медленно растущей функцией - это вовсе не так, для N = 100 (это немного, наверно?) получим число, большее миллиарда. Так что если не запоминать промежуточные результаты, результат будет считаться ооочень долго. S(N) также растет быстро, но это уже другая проблема.
<span>Сейчас в основном используются 8 битные кодировки, постепенно идет переход на юникод.</span>
Program qq;
uses crt;
var x1, y1, x2, y2, n1, n2: integer; x, y, L, M, k, b: real; // чтоб было приятно, возьмём координаты начальных точек - целыми числами.
begin
writeln ('Введите координаты первой точки через пробел');
readln(x1, y1);
writeln('Введите координаты второй токи через пробел');
readln(x2, y2);
writeln ('введите через пробел числа N1 и N2');
readln(n1, n2);
l:=n1/n2; //далее производится расчет по формулам, данным в задании
x:=(x1+L*x2)/(1+L);
y:=(y1+L*y2)/(1+L);
writeln ('Координаты искомой точки (',x,';',y,')');
end.<span>
</span>
Input z
If x+y>0 then
Z = x^2+2y+1
Print z
Else
If x+y=0 then
Z= 1-x^2
Print z
Else
If x+y=0 then
Z=1
Print z
End if
End if
<span>End if
(3 раза end if обязательно) (чел, который сдает информатику.)</span>