如何编写递归Prolog程序判断前两列表元素总数≤第三列表长度
Prolog递归程序实现
实现逻辑
采用纯递归方式实现,不依赖内置长度计算谓词,核心逻辑是同步缩减列表长度进行比较:
- 当第一个和第二个列表都为空时,任意第三个列表都满足条件
- 当第一个列表为空、第二个列表还有元素时,要求第三个列表同步有剩余元素继续递归比较
- 当第一个列表还有元素时,要求第三个列表同步有剩余元素继续递归比较
实现代码
list([], [], _). list([], [_|L2Tail], [_|L3Tail]) :- list([], L2Tail, L3Tail). list([_|L1Tail], L2, [_|L3Tail]) :- list(L1Tail, L2, L3Tail).
测试验证
参考测试用例执行结果:
?- list([a,b,c],[1,2,3],[q,w,e,r]). No
该结果符合预期:第一个列表长度3,第二个列表长度3,总长度6;第三个列表长度4,6>4不满足条件,返回No。
其他验证用例参考:
?- list([a,b],[1],[x,y,z]).返回Yes(总长度3等于3)?- list([],[],[a]).返回Yes(总长度0≤1)?- list([a],[b,c],[]).返回No(总长度3>0)
内容的提问来源于stack exchange,提问作者wang chaoyu
相关产品推荐
相关产品推荐

