昨天碰到了个Prolog问题,题目是,给出一组随机长度的整数列表,将其偶数移除。
题目最后是解决了,但发现了新的问题。有些询问后的结果,明明按“;”再次询问,显示“false.”,再没有解了,为什么之前的结果出来后不直接结束?而有些询问后,就直接结束了。
代码如下:
deleteEven([], []). %递归停止
deleteEven([H|T], L):- %处理偶数
Mod is H mod 2,
isEven(Mod),
deleteEven(T, L).
deleteEven([H|T], [H|L]):- %处理奇数
Mod is H mod 2,
\+isEven(Mod),
deleteEven(T, L).
isEven(0). %判断奇偶
题目最后是解决了,但发现了新的问题。有些询问后的结果,明明按“;”再次询问,显示“false.”,再没有解了,为什么之前的结果出来后不直接结束?而有些询问后,就直接结束了。
代码如下:
deleteEven([], []). %递归停止
deleteEven([H|T], L):- %处理偶数
Mod is H mod 2,
isEven(Mod),
deleteEven(T, L).
deleteEven([H|T], [H|L]):- %处理奇数
Mod is H mod 2,
\+isEven(Mod),
deleteEven(T, L).
isEven(0). %判断奇偶