We have the warning, but the program continued and printed the result.$ perl -wE 'say fact(102); sub fact {my $c = shift; return 1 if $c == +1; return $c *fact($c-1)}' Deep recursion on subroutine "main::fact" at -e line 1. 9.61446671503512e+161
But you can silence that warning if you know well enough what you are doing, using the no warnings "recursion"; pragma. For example:
If your program stops working, it may be because your program recurses really too much, but you should presumably have another message, an actual error message (instead of a warning), telling you why it stopped (out of memory or something).$ perl -wE 'say fact(102); sub fact {my $c = shift; return 1 if $c == +1; no warnings "recursion"; return $c *fact($c-1)}' 9.61446671503512e+161
|
|---|