![]() |
#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); } правда без "оптимизации хвостовой рекурсии" рекурсивные вызовы ограничены размером стека. а с оптимизацией стек вообще расти не будет. так? чертовы функциональщики... ))))) а разве функциональный язык не разворачивает всю эту байду в символьное супер-выражение, которое будет вычислено на самом последнем этапе? |
|