Prolog- rekurencja lewo i prawostronna

0

Jak obliczyć rekurencją lewo i prawostronną sumę elementów listy zawierającej liczby całkowite np.: [1, -3 4,5]?

2

Mogłabyś pokazać co już masz? Bo z pattern matchingiem jest to całkiem proste. By nie ułatwiać za specjalnie podam rozwiązania w Haskellu:

foldl v _ [] = v
foldl v f x:xs = foldl (f v x) f xs

foldr v _ [] = v
foldr v f x:xs = f (foldr v f xs) x

leftSum = foldl 0 (+)
rightSum = foldr 0 (+)
2

Lewostronną rekurencją będzie tak.

sum([], 0).
sum([A], A).
sum([H|T], S) :-
   sum(T, R), S is H + R.

Prawostronna:

sumr(A, R) :- sumr(A, 0, R).
sumr([], A, A).
sumr([H|T], A, R) :-
    X is A + H, sumr(T, X, R).

Czaisz? :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1