|
|
#11 |
|
Участник
|
Цитата:
т.е. от повторных вычислений можно избавиться и в обычных процедурных языках? что-то типа такого Код: public var fib(var n)
{
fibb-iter(1, 0, n);
}
private var fib-iter(var a, var b, var n)
{
if(n <= 0)
return b;
else
return fib-iter(a+b, b, n-1);
}правда без "оптимизации хвостовой рекурсии" рекурсивные вызовы ограничены размером стека. а с оптимизацией стек вообще расти не будет. так? чертовы функциональщики... ))))) а разве функциональный язык не разворачивает всю эту байду в символьное супер-выражение, которое будет вычислено на самом последнем этапе? |
|
|