Задать вопрос
10 января, 03:47

Определите кол-во чисел 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
Ответы (1)
  1. 10 января, 07:14
    0
    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, для которых программа выведет такой же результат, что и для K=20; var i, k: integer; function F (x:integer) : ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы
Похожие вопросы по информатике
Сделать так чтобы Writeln был заменен другим словом и повторялься не больше двух раз program choise; var N_M:integer; writeln (' введи номер месяца ') ; readln (N_M) ; case N_M of 1:writeln (' январь ') ; 2:writeln (' февраль ') ;
Ответы (1)
Как сделать теперь без массива (паскале) ? var nm:array of integer; j, l:integer; begin nm: = new integer[3] (random (20), random (20), random (20)) ; writeln ('nm[0] = ', nm[0]) ; writeln ('nm[1] = ', nm[1]) ; writeln ('nm[2] = ', nm[2]) ;
Ответы (1)
Имеется условный оператор:if D10 then writeln ('ура!') else writeln ('плохо ...') ; Какими операторами его можно заменить? Выберите несколько из 4 вариантов ответа: 1) if D=10 then writeln ('ура!') else writeln ('плохо ...
Ответы (1)
Запиши программу в Паскале для вычисления площади прямоугольника со сторонами c и m. 1) begin writeln ('Введи длину и ширину прямоугольника c и m') ; readln (c, m) ; s:=c*m; writeln ('s=', s) ; readln; end.
Ответы (1)
Какое число будет напечатано в результате выполнения программы: var i, k: integer; function f (x: integer) : integer; var m: integer; begin if x < 10 then f : = x else begin m : = f (x div 10) ; if m < x mod 10 then f : = x mod 10 else f : = m; end;
Ответы (1)