[erlang-questions] is this a well written function
Robert Wilkinson
bob@REDACTED
Mon Feb 9 16:22:35 CET 2015
On Mon, Feb 09, 2015 at 03:38:10PM +0100, Roelof Wobben wrote:
> I know , the exercise is stated this :
>
> Write a function sum/1which, given a positive integer N, will return
> the sum of all the
> integers between 1 and N.
>
> Roelof
If that is the problem, then the most effective way is to sum the
Arithmetic progression?
n * (n + 1) / 2 is the sum of an AP (IIRC).
so
sum(N) -> (((N + 1) * N) / 2) .
which will be much faster than recursion ?
Bob
> Martin Koroudjiev schreef op 9-2-2015 om 15:32:
> >It's perfect, just note that you will get "no function clause" exception
> >if you pass negative number to the function which is probably desired
> >result.
> >
> >Martin
> >
> >On 2/9/2015 4:11 PM, Roelof Wobben wrote:
> >>Roelof Wobben schreef op 9-2-2015 om 14:39:
> >>>sum(End) -> sum_acc(0, 0, End).
> >>>
> >>>sum_acc(Acc, _, 0) ->
> >>> Acc;
> >>>sum_acc(Acc, Current, Rem) ->
> >>> sum_acc(Acc + Current, Current + 1, Rem - 1).
> >>
> >>A new try after some remarks :
> >>
> >>-module(sum_recursion).
> >>
> >>-export([sum/1]).
> >>
> >>% when the number is zero the outcome will also be zero
> >>sum(0) ->
> >> 0;
> >>
> >>% when a number is greater then 0 , call the helper function.
> >>sum(End) when End > 0 ->
> >> sum_acc(0, End).
> >>
> >>% When End is equal to zero all the numbers are added
> >>sum_acc(Acc, 0) ->
> >> Acc;
> >>
> >>% when end is not zero there are more numbers to be added.
> >>sum_acc(Acc, End) ->
> >> sum_acc(Acc + End, End - 1).
> >>
> >>Roelof
> >>_______________________________________________
> >>erlang-questions mailing list
> >>erlang-questions@REDACTED
> >>http://erlang.org/mailman/listinfo/erlang-questions
> >_______________________________________________
> >erlang-questions mailing list
> >erlang-questions@REDACTED
> >http://erlang.org/mailman/listinfo/erlang-questions
> >
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
More information about the erlang-questions
mailing list