Следующий кодПролог `is` арифметика неудачу странно
itD(Start, End, Distance, Max) :-
Distance < Max,
newDistance is Distance+1,
itD(Start, End, newDistance, Max).
дает мне очень странно, не в состоянии.
2 2 Call: 0<15 ?
2 2 Exit: 0<15 ?
3 2 Call: newDistance is 0+1 ?
3 2 Fail: newDistance is 0+1 ?
Который я действительно не понимаю. Так как я использую действительно базовую арифметику.
| ?- Distance is 1, NewDistance is Distance+1.
Distance = 1
NewDistance = 2
yes
Как вы можете видеть, у меня нет проблем с тем, что когда-либо пишут ту же операцию в консоли.
Я был бы очень рад, если бы кто-то помог мне понять эту странную арифметическую проблему.
Действительно, переменные начинаются с заглавной буквы или символа подчеркивания. Нижний регистр 'newDistance' - это атом; вы можете использовать 'NewDistance' и т. д. – hardmath