Сумма четных из первых N чисел Фибоначчи - Prolog
Формулировка задачи:
Помогите пожалуйста с задачей: Дано число. Проверить, является ли оно суммой четных чисел из n первых чисел Фибоначчи. Найти число n
Нужно что бы выводило номер на котором будет как раз будет сумма числа. Например для 44 это будет 10. Но и еще что бы выводило позиции до следующего четного числа. Т.е. вводим S=44, а в ответе выдало 10,11,12
Решение задачи: «Сумма четных из первых N чисел Фибоначчи»
textual
Листинг программы
sum_chet(N, A, I, SUM):- I<N, I1 is I + 1, fib1(I1, FIBNUM), /* вот тута<----------------------- ( chet(FIBNUM) -> SUM1 is SUM + FIBNUM ; SUM1 is SUM ), sum_chet(N, A, I1, SUM1).
Объяснение кода листинга программы
sum_chet(N, A, I, SUM):-
- определение функции с четырьмя аргументами: N (количество чисел Фибоначчи для которых нужно найти сумму четных), A (неизвестное значение), I (индекс текущего числа Фибоначчи), SUM (сумма четных чисел Фибоначчи).I<N
- проверка, что индекс текущего числа Фибоначчи меньше заданного количества чисел.I1 is I + 1
- присваивание нового значения индексу, увеличивая его на единицу.fib1(I1, FIBNUM)
- вызов функции fib1, которая вычисляет число Фибоначчи с заданным индексом. Значение числа Фибоначчи сохраняется в переменной FIBNUM.( chet(FIBNUM) -> SUM1 is SUM + FIBNUM ; SUM1 is SUM)
- условная конструкция, которая проверяет, является ли число FIBNUM четным. Если это так, то к сумме SUM добавляется значение FIBNUM, иначе значение SUM1 остается неизменным.sum_chet(N, A, I1, SUM1).
- рекурсивный вызов функции sum_chet с новыми значениями аргументов: N, A, I1, SUM1. Список вызовов функции sum_chet:sum_chet(N, A, I, SUM).
sum_chet(N, A, I1, SUM1).
sum_chet(N, A, I2, SUM2).
sum_chet(N, A, I3, SUM3).
sum_chet(N, A, I4, SUM4).
sum_chet(N, A, I5, SUM5).
sum_chet(N, A, I6, SUM6).
sum_chet(N, A, I7, SUM7).
sum_chet(N, A, I8, SUM8).
sum_chet(N, A, I9, SUM9).
sum_chet(N, A, I10, SUM10).
sum_chet(N, A, I11, SUM11).
sum_chet(N, A, I12, SUM12).
sum_chet(N, A, I13, SUM13).
sum_chet(N, A, I14, SUM14).
sum_chet(N, A, I15, SUM15).
sum_chet(N, A, I16, SUM16).
sum_chet(N, A, I17, SUM17).
sum_chet(N, A, I18, SUM18).
sum_chet(N, A, I19, SUM19).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д