pelr 递归求阶乘报错,但是一直没有发现哪错了
#! /usr/bin/perluse strict;use warnings;sub fac{ my $n = @_; if(1 == $n) { return 1; } else { return ($n * fac($n - 1)); }}print "Please input a number:";chomp ($n = <STDIN>);my $result = fac($n);print "$n! = $result";
my $n = @_
[解决办法]
函数参数值的获取两种方法
一种如1楼所说
另一种是
my ($n) = @_;
[解决办法]
楼主主要有2个问题:
1) my $n = @_; 写法不对,应该写成my $n = $_[0]; 1楼3楼是对的。
2) 使用了use strict;的意思就是强制使用私有变量。
所以,需要将chomp ($n = <STDIN>); 改成:chomp (my $n = <STDIN>);
[解决办法]
获取参数的方法还有一个
my $x=shift;
使用shift,即默认从@_中弹出数据。