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

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

Ответ:
kainkem
kainkem
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
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?