首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列表中交替元素的总和

列表中交替元素的总和
EN

Stack Overflow用户
提问于 2014-11-22 19:52:18
回答 1查看 370关注 0票数 1

我正在尝试计算列表中交替元素的和,但它不能正常工作,并且我找不到问题……请帮帮我。

如果我有一个列表: 1,2,3,4,它应该返回1 -2 +3-4 =-2。

这是我的代码:

代码语言:javascript
复制
poz(E,[],0):-!.
poz(E,L,N):-poz_aux(E,L,N,1).

poz_aux(E,[E|_],N,N).
poz_aux(E,[_|T],N,K):-
    K1 is K + 1,
    poz_aux(E,T,N,K1).

suma([],0).
suma(L,S):-suma_aux(L,S,L,0).

suma_aux([],S,_,S).
suma_aux([H|T],S,L,S1):-
    poz(H,L,P),
    P mod 2 = 1,
    S2 is S1 + H,
    suma_aux(T,S,L,S2).
suma_aux([H|T],S,L,S1):-
    poz(H,L,P),
    P mod 2 = 0,
    S2 is S1 - H,
    suma_aux(T,S,L,S2).
EN

回答 1

Stack Overflow用户

发布于 2014-11-22 20:13:29

这样的事情可以用程序结构更好地表达出来:

代码语言:javascript
复制
list_altsum([], 0).
list_altsum([A], S) :-
   S is A.
list_altsum([A,B|ABs],S0) :-
   list_alsum(ABs, S1),
   S0 is A-B+S1.

或者:

代码语言:javascript
复制
list_altsum(Xs, S) :-
   list_altsum(Xs, 1, S).

list_altsum([], _, 0).
list_altsum([A|As], F0, S0) :-
   F1 is -F0,
   list_altsum(As, F1, S1),
   S0 is F0*A+S1.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27077064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档