gpt4 book ai didi

PROLOG 堆栈溢出递归乘法

转载 作者:行者123 更新时间:2023-12-01 10:19:35 26 4
gpt4 key购买 nike

multiply(A,0,0).
multiply(A,B,C) :- D is B-1, multiply(A,D,E), C is E+A.

在使用此规则一次并且 Prolog 返回答案后,如果我希望它继续搜索(提示 A = 5 ? 我点击 ;),Prolog 会崩溃。我不明白为什么?谁能解释一下。谢谢。

最佳答案

问题是,

multiply(A,B,C) :- D 是 B-1,multiply(A,D,E),C 是 E+A。

此代码没有阻止堆栈溢出发生的约束 B > 0

您可以将代码修改为,

multiply(A,B,C) :- B > 0,D 是 B-1,multiply(A,D,E),C 是 E+A。

此外,这一行 multiply(A,0,0). 给出了单例警告,因此您可以将其更改为 multiply(_,0,0)

注意:我编写约束 B > 0 时认为您将谓词称为 multiply(5,1,A)

关于PROLOG 堆栈溢出递归乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54937054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com