【发布时间】:2017-07-25 22:06:20
【问题描述】:
我正在研究 Perl 中的阶乘函数。
下面的代码给了我错误Can't return outside a subroutine.
factorial {
my $n = $ARGV[0];
if( $n <= 1 ){
return 1; # ----- Error Here -----
}
else {
return $n * factorial($n - 1);
}
}
我相信我的 if 语句仍在子例程中。是什么导致了错误?
【问题讨论】:
-
你通过
sub factorial { ... }定义了一个子程序。没有sub关键字,它是别的东西,而不是子程序 -
调用主函数
factorial(); -
另请注意,
$ARGV[0]是程序的第一个命令行参数,而不是子程序的第一个参数(在$_[0]中)。
标签: perl