使用'amt'变量在Prolog-Problem中添加偶数元素

时间:2010-12-11 16:16:23

标签: prolog add

我正在试图弄清楚如何在列表中添加偶数元素(我已经研究了一些例子,但我自己也不能这样做,需要你的帮助来确定我对特定区域缺乏理解)。

我使用的输入是开始([1,2,3,4,5])。没有编译错误,但我没有得到任何输出。我不确定逻辑错误是什么..请问您能提出建议吗?

(在修改我的代码后,请参阅下面的最新更新,现在它可以工作,问题在于我使用'amt'的方式,但我不知道为什么!)

原始代码无效:

start(X):- add(X,1,amt), write(amt).

add([],_,0).  
add([H|Tail],Cnt,amt):-
  T is (Cnt mod 2), T == 0, Cnt1 is Cnt + 1, add(Tail,Cnt1,Y), amt is H+Y; 

  T is (Cnt mod 2), T =\=0, Cnt1 is Cnt + 1, add(Tail, Cnt1, amt).

最新更新:

我用'S'替换'amt',它有效!但为什么它与'amt'一起工作?

这是修改后的代码:

start(X):- add(X,1,S), write(S).

add([],_,0).  
add([H|Tail],Cnt,S):-
  T is (Cnt mod 2), T == 0, Cnt1 is Cnt + 1, add(Tail,Cnt1,Y), S is H+Y; 

  T is (Cnt mod 2), T =\=0, Cnt1 is Cnt + 1, add(Tail, Cnt1, S).

谢谢:)

1 个答案:

答案 0 :(得分:1)

您打算显示amt1吗?