为什么Perl中的以下递归factorial失败,即使它在C++和Java中有效?
Java的:
public static long factorial(int n) {
if (n == 0) {
return 1;
} else {
return factorial(n-1) * n;
}
}
Run Code Online (Sandbox Code Playgroud)
C++:
long factorial(int n) {
if (n == 0)
return 1;
else
return n * factorial(n-1);
}
Run Code Online (Sandbox Code Playgroud)
但是这个在Perl(use Carp;)中失败了:
sub factorial {
my $n = shift || croak "null value for argument";
return 1 if $n == 0; # base case
return $n * factorial($n-1);
}
Run Code Online (Sandbox Code Playgroud)
错误消息(第10行是调用函数的地方main(),第16行是第二个return语句):
null value for …Run Code Online (Sandbox Code Playgroud)