Предмет: Информатика,
автор: hiddenhand
Определите кол-во чисел K, для которых программа выведет такой же результат, что и для K=20;
var i, k: integer;
function F(x:integer):integer;
begin
if x < 3 then
F:= 1
else F:= F(x-1) + F(x-2);
end;
begin
i:= 21; readln(K);
while (i > 0) and (F(i) > K) do
i:=i-1;
writeln(i);
end.
Ответы
Автор ответа:
1
var
k,fk, k20, count: integer;
function F(x: integer): integer;
begin
if x < 3 then
F := 1
else F := F(x - 1) + F(x - 2);
end;
begin
k20:=F(20);
writeln(k20);
count:=-1; {k=20 мы ж вроде должны вычесть}
for k := 3 to 50 do begin
fk:=F(k);
if fk=k20 then count:=count+1;
write(fk,' ');
end;
writeln(count);
end.
функция работает очень медленно потому что это рикурсия. Функция создает последовательность числ фибоначи которые вообщ то не повторяются потому что последовательность возрастающая. Повторения вообщем возможны изза того что integer это не безконечная последовательность, а кольцо, но дождаться результатов при таким образом построенной функции просто нереально
k,fk, k20, count: integer;
function F(x: integer): integer;
begin
if x < 3 then
F := 1
else F := F(x - 1) + F(x - 2);
end;
begin
k20:=F(20);
writeln(k20);
count:=-1; {k=20 мы ж вроде должны вычесть}
for k := 3 to 50 do begin
fk:=F(k);
if fk=k20 then count:=count+1;
write(fk,' ');
end;
writeln(count);
end.
функция работает очень медленно потому что это рикурсия. Функция создает последовательность числ фибоначи которые вообщ то не повторяются потому что последовательность возрастающая. Повторения вообщем возможны изза того что integer это не безконечная последовательность, а кольцо, но дождаться результатов при таким образом построенной функции просто нереально
Похожие вопросы
Предмет: Музыка,
автор: Андре434fsgadag
Предмет: Английский язык,
автор: HosefuBlack
Предмет: Математика,
автор: lyashin2000
Предмет: Математика,
автор: trolololopa1996
Предмет: Математика,
автор: Аноним