стека, если он не
стека, если он не равен единице. В этом случае мы снижаем требования к размерности массива, так для вычисления, например, 1000-го элемента потребуется стек из 17 ячеек, но, по-прежнему, условие задачи не выполнено, массив есть.
Из формулировки задачи явно просматривается рекурсивная схема реализации.
function rec(n:integer):integer;
begin
if n=1 then rec:=1 else if n div 2 =0 then rec:=rec(n div 2)
else rec:=rec((n-1) div 2)+rec((n+1) div 2);
end;
Массива в явном виде нет. Однако глубина вложенности подпрограмм в конкретных языках программирования ограничена, и это обстоятельство определяет пределы применимости данной логики. Ее можно улучшить, сократив лишние рекурсивные вызовы (рассмотрите случай, когда n=64).
function rec(n:integer):integer;
begin
while n div 2=0 do n:=n div 2;
if n=1 then rec:=1 else rec:=rec((n-1) div 2)+rec((n+1) div 2);
end;
И все же это не окончательный вариант решения. Из вышеприведенного рисунка видим, что в процессе эволюции (вычисление
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа