Смысл использования накопления состоит в том, чтобы сделать его более эффективным в использовании памяти, когда n-ое число FIB теперь становится большим, я получаю глобальное переполнение стека для чисел, которые на самом деле не так велики.

огическое программирование действительно делает танец на коленях на моих императивных навыках программирования. Это домашнее задание, поэтому, пожалуйста, не бросайте мне ответ. Вот что у меня есть:

fibo(N,1) :-
   N < 2,
   !. 
fibo(N,R) :-
   N1 is N-1,
   N2 is N-2,
   fibo(N1,R1),
   fibo(N2,R2),
   R is R1+R2.

Я предполагаю сделать еще одну функцию, которая выглядит следующим образом;fib(N,Value,LastValue). N это n-е число, а значение это возвращаемое значение. Я не понимаю, как я могу переписать это с помощью накопления. И поскольку он считает в обратном направлении, я не вижу, как он может «узнать» последнее значение, прежде чем вычислить что-либо. : s Любой вклад приветствуется.

Ответы на вопрос(5)

Ваш ответ на вопрос