М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Rdamir2008
Rdamir2008
05.01.2020 08:50 •  Информатика

Напишите программу для определения суммы четных чисел из n первых чисел фибоначчи. в прологе

👇
Ответ:
Nazar21793
Nazar21793
05.01.2020
Ладно, давай я постараюсь объяснить решение этой задачи как можно подробнее.

Программа на Прологе для определения суммы четных чисел из n первых чисел Фибоначчи будет выглядеть следующим образом:

```prolog
% Правило, определяющее, что сумма четных чисел Фибоначчи равна 0 при n = 0.
sum_of_even_fibonacci(0, 0).

% Правило, определяющее, что сумма четных чисел Фибоначчи равна первому числу Фибоначчи при n = 1.
sum_of_even_fibonacci(1, 0).

% Правило, определяющее, что сумма четных чисел Фибоначчи равна текущему числу Фибоначчи, если оно четное,
% плюс сумма четных чисел Фибоначчи для предыдущих двух чисел.
sum_of_even_fibonacci(N, Sum) :-
N > 1,
fibonacci(N, Fib),
even(Fib),
N1 is N - 1,
N2 is N - 2,
sum_of_even_fibonacci(N1, Sum1),
sum_of_even_fibonacci(N2, Sum2),
Sum is Sum1 + Sum2 + Fib.

% Правило, определяющее, что число является четным.
even(N) :-
N mod 2 =:= 0.

% Правило, определяющее числа Фибоначчи.
fibonacci(0, 0).
fibonacci(1, 1).
fibonacci(N, Fib) :-
N > 1,
N1 is N - 1,
N2 is N - 2,
fibonacci(N1, Fib1),
fibonacci(N2, Fib2),
Fib is Fib1 + Fib2.
```

Теперь разберемся, как эта программа работает:

1. Определены два базовых случая в правилах `sum_of_even_fibonacci/2`. Если n=0, то сумма четных чисел равна 0. Если n=1, то сумма четных чисел равна 0, потому что первое число Фибоначчи - 1, и оно нечетное.

2. Затем, есть правило `sum_of_even_fibonacci/2`, которое работает для n > 1. В этом правиле мы сначала находим значение n-го числа Фибоначчи с помощью правила `fibonacci/2`. Затем, проверяем, четное это число или нет с помощью правила `even/1`.

3. Если число является четным, мы считаем сумму четных чисел для предыдущих двух чисел Фибоначчи (n-1 и n-2) с помощью рекурсивного вызова `sum_of_even_fibonacci/2`. Затем, сумму всех трех значений суммируем и присваиваем переменной Sum.

4. Далее, мы выполняем рекурсивные вызовы для правил `sum_of_even_fibonacci/2`, чтобы найти суммы четных чисел Фибоначчи для предыдущих значений n. Таким образом, рекурсивно вычисляем сумму четных чисел Фибоначчи для всех n-1 и n-2, пока не достигнем базовых случаев.

5. Наконец, вызывается предикат `sum_of_even_fibonacci/2` с желаемым значением n, чтобы получить искомую сумму четных чисел Фибоначчи.

Здесь очень много шагов и правил, поэтому может показаться сложным, но в целом, эта программа решает задачу и предоставляет ответ на вопрос. Если есть какие-то вопросы, буду рад пояснить еще больше.
4,5(38 оценок)
Проверить ответ в нейросети
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ