ฉันมีปัญหาในการเข้าใจว่าค่าของ Z เปลี่ยนแปลงตลอดเวลาอย่างไร ขั้นตอนเฉพาะได้รับการระบุไว้ในเอาต์พุตการติดตามสแต็ก
นี่คือโค้ดที่ฉันใช้หาผลรวมของจำนวนธรรมชาติ N -
sum1(1,1).
sum1(N, Sum) :-
Next is N-1,
sum1(Next, Z),
Sum is Z + N.
นี่คือการติดตามสแต็ก -
?- sum1(3,_).
Call: (8) sum1(3, _2668) ? creep
Call: (9) _2860 is 3+ -1 ? creep
Exit: (9) 2 is 3+ -1 ? creep
Call: (9) sum1(2, _2862) ? creep
Call: (10) _2866 is 2+ -1 ? creep
Exit: (10) 1 is 2+ -1 ? creep
Call: (10) sum1(1, _2868) ? creep
Exit: (10) sum1(1, 1) ? creep
Call: (10) _2872 is 1+2 ? creep
Exit: (10) 3 is 1+2 ? creep
Exit: (9) sum1(2, 3) ? creep **%How is Z assigned value 3 ?**
Call: (9) _2668 is 3+3 ? creep
Exit: (9) 6 is 3+3 ? EOF: exit
ขอบคุณล่วงหน้า!
Z = A
จะมีการสร้างตัวแปรที่ไม่ระบุชื่อใหม่_1234
ขึ้น ซึ่งกำหนดให้กับทั้ง A และตำแหน่งทั้งหมดที่ใช้ Z - person G_V   schedule 10.04.2018