首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

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

2012-03-07 
pelr 递归求阶乘报错,但是一直没有发现哪错了Perl code#! /usr/bin/perluse strictuse warningssub fac{

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,即默认从@_中弹出数据。

热点排行