私は1からNの階乗を印刷するプログラムを書いて、引数として式を渡します。プロローグは:
factorial(1, 1).
factorial(A, B) :-
A > 0,
C is A-1,
factorial(C, D),
B is A*D.
print_fact(X) :-
print_fact_iter(1, X).
print_fact_iter(X, Max) :-
X < Max+1,
factorial(X, N),
write("factorial("),
write(X),
write(") = "),
write(N),
nl,
Next is X+1,
print_fact_iter(Next, Max).
階乗(1)= 1
階乗(2)= 2
階乗(3)6
階乗を=(4)= 24
階乗(5)= 120
しかし、私はNext is X+1,
を削除し、X+1
とNext
を交換するとき、それは奇妙な何かを出力します。
print_fact_iter_weird(X, Max) :-
X < Max+1,
factorial(X, N),
write("factorial("),
write(X),
write(") = "),
write(N),
nl,
print_fact_iter_weird(X+1, Max).
階乗(1)= 1
階乗を( 1 + 1)= 2
階乗(1 + 1 + 1)= 6
階乗(1 + 1 + 1 + 1)= 24
階乗(1 + 1 + 1 + 1 + 1)= 120
コンピューティングは、実際に正しいが、X+1
が低減されていないと思われます引数として渡され、文字列として解釈されますか?
[この回答](http://stackoverflow.com/questions/37481942/counting-occurrences-in-list#answer-37483710)をご覧ください。あなたの問題について説明します。 – lurker