Programming Gems::Erlang
Материал из NNLUG Wiki.
[править]
Erlang
-module (factorial).
-export ([fac/1]).
% Поиск факториала числа
% в данном примере продемонстрирована "хвостовая рекурсия"
fac (N) ->
fac (N, 1).
fac (0, Acc) ->
Acc;
fac (N, Acc) ->
fac (N - 1, Acc * N).
% пример использования
factorial:fac(5).
120
-module (quicksort).
-export ([myqsort/1]).
% Быстрая сортировка
myqsort ([]) ->
[];
myqsort ([Head | Tail]) ->
myqsort ([Elements || Elements <- Tail, Elements < Head])
++ [Head] ++
myqsort ([Elements || Elements <- Tail, Elements >= Head]).
% пример использования
quicksort:myqsort([3, 2, 12, 6, 43]).
[2,3,6,12,43]
-module (pythagor).
-export (pythfun/1).
% Функция выдаёт всевозможные варианты троек чисел (A, B, C),
% удовлетворяющих уравнению A^2 + B^2 = C^2,
% при этом ни сами числа, ни их сумма не должны превосходить
% заданного N
% решаем теорему Пифагора :)
pythfun(N) ->
[{A, B, C} ||
A <- lists:seq (1, N),
B <- lists:seq (1, N),
C <- lists:seq (1, N),
A + B + C =< N,
A * A + B * B =:= C * C].
% примеры использования
pythagor:pythfun(16).
[{3,4,5},{4,3,5}]
pythagor:pythfun(30).
[{3,4,5},{4,3,5},{5,12,13},{6,8,10},{8,6,10},{12,5,13}]

