• Определите кол-во чисел 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 это не безконечная последовательность, а кольцо, но дождаться результатов при таким образом построенной функции просто нереально
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years