Аватар
Информатика, опубликовано 2018-08-22 23:09:27 by Гость

Определите кол-во чисел 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.

Аватар
Ответ оставил Гость

Var
    k,fk, k20, count: integer;

function F(x: integer): integer;
begin
    if x         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 это не безконечная последовательность, а кольцо, но дождаться результатов при таким образом построенной функции просто нереально

Вопрос
Не нашли ответа?
Если вы не нашли ответа на свой вопрос, или сомневаетесь в его правильности, то можете воспользоваться формой ниже и уточнить решение. Или воспользуйтесь формой поиска и найдите похожие ответы по предмету Информатика.