Существует рекурсивная реализация вычисления факториала N на Perl.
sub fact {
my ($n) = shift;
return $n if $n <= 2;
return $n * fact($n - 1);
}
Может ли кто-нибудь объяснить мне, где Perl хранит промежуточные результаты до того, как функция даст результат?
UPD и как я могу их увидеть с помощью отладчика или с помощью чего-то еще?
Из ответов мне объяснили, что эти значения хранятся в стеке, но как я могу увидеть эти значения из стека?
fact
, или$n
, или...? В стеке. - person Ry-♦   schedule 01.01.2013$n
, просто используя эту переменную. Вызов функции просто возвращает возвращаемое значение. Perl творит чудеса за вас. Если вы пытаетесь решить конкретную проблему, может помочь сообщение что вы пытаетесь сделать, а не как. (Если это академическая проблема, я все еще не совсем понимаю) - person amon   schedule 01.01.2013my $f = fact($n - 1);
- person ikegami   schedule 02.01.2013print
получает их оттуда. Упрощенно:print($a, $b, $c*$d)
равноpush @stack, $a; push @stack, $b; push @stack, $c; push @stack, $d; multiply; print;
- person ikegami   schedule 04.01.2013