Jak obliczyć rekurencją lewo i prawostronną sumę elementów listy zawierającej liczby całkowite np.: [1, -3 4,5]?
0
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? :)