Главная > erlang > Как быстро посчитать сумму от 1 до 5000000000?

Как быстро посчитать сумму от 1 до 5000000000?


В книжке по erlang есть интересный пример, демонстрирующий использование так называемого аккумулятора (и рекурсии) на примере подсчета суммы от 1 до n целых чисел.


sum(Boundary) -> sum_acc(1,Boundary,0).

sum_acc(Index,Boundary,Sum) when Index =< Boundary ->
 sum_acc(Index+1,Boundary,Sum+Index);
sum_acc(_I,_B,Sum) -> Sum.

Красиво, но не эффективно. Интереса ради переписал алгоритм в 4 строки, но уже O(1). А вам слабо? 😉

PS: Язык программирования в принципе не важен.

sourcecode language="xml"
Реклама
  1. [MDA]Den
    15.11.2009 в 22:31

    Сумма от 1 до n простых есть:
    S = (1 + n) * n / 2;

  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s