Galera, todo tentando rodar esse codigo ai abaixo.
LINGUAGEM PROLOG, alguem saberia me explicar a logica desse programa.
% Fatorial
fat(0,1).
fat(N,F) :- N1 is N-1, fat(N1,F1), F is N*F1.
f_print(N) :-
write('Fatorial de '), write(N), write(' = '),
fat(N,X), write(X), nl, halt.
% Chamada do programa principal
main :-
f_print(30).
main.
EDIT - acertei os apóstrofes que deveriam ter aparecido no lugar dos “?”
fat(N,F) :- N1 is N-1, fat(N1,F1), F is N*F1.
–> Declaramos que:
N1 é N - 1.
O fatorial de N - 1 é F1, onde F é N * F1.
f_print(N) :-
write('Fatorial de ‘), write(N), write(’ = '),
fat(N,X), write(X), nl, halt.
–> Aqui imprimimos "Fatorial de " + N " + “=”, e então calculamos o fatorial de N e jogamos em X. Imprimimos X.
Veja que as coisas são um pouco "ao contrário"; mas (é que não estou com uma implementação do Prolog aqui para lhe afirmar) acho que dá para criar uma implementação do fatorial como a definição tradicional.