Prolog'u öğreniyorum ve bir egzersiz olarak, verilen sayıya kadar tüm sayıların toplamını hesaplayan basit bir veri tabanı deniyorum (yani 0 = 0, 1 = 1, 2 = 3, 3 = 6) 4 = 10, ...). Yeterince kolay:Bu Prolog'da kuyruk özlemi yapılabilir mi?
yığın taşması ile bir yerecounting_sum(150000, X).
etrafında darbeler
counting_sum(0, 0).
counting_sum(Num, Sum) :- Num > 0, PrevNum is Num - 1,
counting_sum(PrevNum, PrevSum), Sum is Num + PrevSum.
. Ben Prolog kuyruk özyinelemeye yapabilir anlamak, ancak kural sonuna özyinelemeli çağrı taşırsanız, ben de en counting_sum(PrevNum, PrevSum)
ile birleşik oldu önce PrevSum
kullanamaz beni anlatıyor varsayalım
error(instantiation_error,(is)/2)
olsun . Bu doğru mu ve bu kuyruğu tekrarlamak için herhangi bir yol var mı? Eğer fark yaratan GNU Prolog 1.3.1 kullanıyorum.
P.S. Terminolojide hala titriyorum. Terimlerini yanlış kullanmış olsaydım haber ver. Böyle
Sen örnekleme hatasının nedeni hakkında doğru. –