【发布时间】:2013-11-16 10:04:03
【问题描述】:
我需要在列表中找到最大偶数。例如
goal: maxEVEN([4,10,-2,-1,23],M).
M=10.
我写了以下代码:
maxeven([],M).
maxeven([X|R],M):- Rest is X mod 2,
isRest(Rest, X, M, R).
isRest(0,X,M,[List]):- X > M,
maxeven(List,X).
isRest(0,X,M,[List]):- X < M,
maxeven(List,M).
isRest(Rest,X,M,[List]):- maxeven(List,M).
它将抛出每个循环成员并检查它是否是偶数,如果它正在检查它是否是创建者而不是已经分配的 M 值。
问题是,对于第一次调用 isRest 谓词,M 的值是空的,这就是它总是返回 false 的原因。我不知道我第一次可以为这个变量分配什么值,这个算法将适用于所有数字。
【问题讨论】:
标签: list for-loop numbers prolog