Это логическое программирование действительно заставляет танцевать на коленях мои императивные навыки программирования. Это домашнее задание, поэтому, пожалуйста, не присылайте мне ответ. Вот что у меня есть:
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, Значение, LastValue)
. так что, пожалуйста, просто не бросай мне ответ. Вот что у меня есть:
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, Значение, LastValue)
. так что, пожалуйста, просто не бросай мне ответ. Вот что у меня есть:
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, Значение, LastValue)
.
N
- это n-е число, а значение - это возвращаемое значение. Я не понимаю, как это можно переписать с помощью накопления. И поскольку он считает в обратном порядке, я не понимаю, как он может «узнать» последнее значение, прежде чем что-либо вычислит. : s Любой вклад приветствуется.