在 Prolog 中添加偶数元素 - “amt”问题多变的

发布于 2024-10-06 20:23:52 字数 865 浏览 0 评论 0原文

我正在尝试弄清楚如何在列表中添加偶数元素(我已经研究过示例,但还不能自己完成,需要您的帮助来确定我对特定领域缺乏理解)。

我使用的输入是 start([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).

谢谢:)

I'm trying to figure out how to add even elements in a list (i've studied examples but cant do it on my own yet, need your help in pinning down my lack of understanding to a specific area).

The input I used is start([1,2,3,4,5]). There is no compilation error, but I dont get any output. I'm not sure what the logical error is..could you please advise?

(please see below for the latest update, after revising my code, now it works, and the problem lies in the way I use 'amt', but I dont know why!)

Original code that didnt work:

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).

Latest Update:

I replaced 'amt' with a 'S', and it works! But why wldnt it work with 'amt'?

here's the revised code that works:

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).

Thanks :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

莫言歌 2024-10-13 20:23:52

您打算显示 amt1 吗?

Are you intending to display amt1?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文