Ошибка при выводе - Prolog

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, написал вот такую програмку по нахождению позиции числа n в последовательности Фибоначчи. На вход подается сумма четных чисел, на выходите необходимо получить позицию, но есть где-то ошибка не могу понять, как исправить.
Листинг программы
  1. fib(N,F):-fib(N,1,0,F).
  2. fib(N,Fib1,Fib2,F):-
  3. N>1,
  4. N1 is N-1,
  5. NewF is Fib1+Fib2,
  6. fib(N1,NewF,Fib1,F).
  7. fib(1,F,_,F).
  8. chet(X):-P is X mod 2,P ==0.
  9. sumchet(N,X):-sumchet(N,0,X).
  10. sumchet(N,Sum,X):-
  11. N>0,
  12. N1 is N-1,
  13. fib(N,F),
  14. (chet(F) -> Sum1 is Sum+F; Sum1 is Sum),
  15. sumchet(N1,Sum1,X).
  16. sumchet(0,Sum1,Sum1).
  17. check(Numb,N):-check(Numb,0,0,N).
  18. check(Numb,Numb_ans,Pos,N):-
  19. Numb>=Numb_ans,
  20. Pos1 is Pos+1,
  21. sumchet(Pos1,Numb_ans1),
  22. (Numb_ans1 == Numb -> write('Yes'); Num_ans2 is Numb_ans1),
  23. check(Numb,Num_ans2,Pos1,N).
  24. check(_,_,Pos1,Pos1).

Решение задачи: «Ошибка при выводе»

textual
Листинг программы
  1. check(Numb,N):-check(Numb,0,0,N).
  2. check(Numb,Numb,Pos,Pos).
  3. check(Numb,NumbPos,Pos,N):-
  4.     Numb>=NumbPos,
  5.     Pos1 is  Pos+1,
  6.     sumchet(Pos1,NumbPos1),
  7.     check(Numb,NumbPos1,Pos1,N).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы