读书人

pelr 递归求阶乘报错但是一直没有发

发布时间: 2012-03-07 09:13:51 作者: rapoo

pelr 递归求阶乘报错,但是一直没有发现哪错了

Perl code
#! /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";


请各位帮忙看一下,我一直没看出哪个地方有错,但是执行的时候就报错了。

[解决办法]
Perl code
my $n = @_
[解决办法]
函数参数值的获取两种方法
一种如1楼所说
另一种是
Perl code
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,即默认从@_中弹出数据。

读书人网 >perl python

热点推荐