В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
Rayanachechenka
Rayanachechenka
10.12.2021 08:41 •  Информатика

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

Показать ответ
Ответ:
Sasha25rrtt
Sasha25rrtt
21.07.2020 02:03
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 это не безконечная последовательность, а кольцо, но дождаться результатов при таким образом построенной функции просто нереально
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота