List Prolog应返回值时打印false
所以基本上,我试图在列表中找到第二个最小值,问题是mino和secondMin返回false,而不是数字。当我手动执行minlist(List,Min)时,它返回Min=number,但我无法让sec接受该值。相反,它仍然是错误的。有人能帮忙吗 第二最小值List Prolog应返回值时打印false,list,prolog,minimum,List,Prolog,Minimum,所以基本上,我试图在列表中找到第二个最小值,问题是mino和secondMin返回false,而不是数字。当我手动执行minlist(List,Min)时,它返回Min=number,但我无法让sec接受该值。相反,它仍然是错误的。有人能帮忙吗 第二最小值 secondMin(L, Min2):- minlist(L,Min), delete(L,Min,Li), %no prob ver mino(L, k),
secondMin(L, Min2):-
minlist(L,Min),
delete(L,Min,Li), %no prob ver
mino(L, k), %return k as the 2nd minimum of L
Min2 is k. %Min2 is k.
//////////some code here////////////
mino(List, sec):-
sec is minlist(List, Min). %min 2 is the minimum of Li
你需要读一本教程或者买一本教科书。只有算术“函数”返回值,如果在该模式下调用,则所有其他谓词仅使用其中一个参数作为输出 大概是
minlist(List, Min)
而不是
Min is minlist(List)
这有点奇怪,因为您在谓词的开头正确地执行了几次,然后突然开始执行错误的操作
至于“列表中第二小的数字”,这可能更容易:
第二个最小的元素是列表,它是排序列表中的第二个元素
如果列表没有接地,则会发生故障,但您最初的尝试也是如此。
sec
是一个常量,而不是变量等。
second_smallest(List, SS) :-
sort(List, [_,SS|_]).