А чем ещё в 5 утра заниматься?

В результате написал "Hello world" на эрланге.
В виде вычисления чисел Фибоначчи. В лоб написал.

fibb(0) ->
0;
fibb(1) ->
1;
fibb(N) when N > 1 ->
fibb(N - 1) + fibb(N - 2).

Попытался посчитать fibb(10). Посчитал. Вах!
Попытался посчитать fibb(100). WTF?! Подвесил ядро процессора.
Подумал.
Написал аналог на vc++.
Попытался посчитать fibb(10). Посчитал. Вах!
Попытался посчитать fibb(100). WTF?! Подвесил второе ядро процессора.
Подумал ещё раз.
Почесал тыковку.
В тыковку пришла мысля, что рекурсия-то получается экспоненциальная, а не линейная. Отсюда и пожирание процессора.
Переписал на цикл.
Что-то посчиталось. И для 10 и для 100.
Задумался, как делать цикл в эрланге.
Не придумал.
Полез, посмотрел, как кошерно на эрланге считать числа фиббоначи.
Понял, как делать цикл в эрланге. Во всяком случае для данного случая.
Переписал свой код по новому лекалу.

fibb(N) ->
fibb(N, 0, 1).

fibb(0, P, _) ->
P;
fibb(N, P, PP) when N > 0 ->
fibb(N-1, PP+P, P).

Посчитал для 10. Норм.
Посчитал для 100. Тоже норм. Хотя, WTF?! Число явно не совпадает с тем что посчиталось в vc++.
Подумал.
Добавил в c++ исключение при проверке на переполнение.
Словил исключение.
Значит подумал правильно.
Но вообще странно... Опаньки, проект то 32-х разрядный оказался.
Впрочем 64-х битов тоже не хватило. Добавил потом в модуле эрланга подсчёт числа битов в цифре, получил что в фиббоначи(100) - 69 бит.

Кстати, само число: 354'224'848'179'261'915'075
Или:
Триста пятьдесят четыре квинтиллиона двести двадцать четыре квадриллиона восемьсот сорок восемь триллионов сто семьдесят девять миллиардов двести шестьсот один миллион девятьсот пятнадцать тысяч семьдесят пять. Фуф. Спасибо есть перевод чисел в текст, достаточно разрядный