perl – 在3中找到最多的数字

前端之家收集整理的这篇文章主要介绍了perl – 在3中找到最多的数字前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试编写一个脚本来查找3个数字中最大的数字,并通过命令行参数传递它们

我只是想知道我在这段代码中写的错误是什么,谢谢你的帮助.

sub maximum($) {
    ($num1) = @_ ; 
    ($num2) = @_ ; 
    ($num2) = @_ ; 

    $max = $num1;

    if ($num2 > $num1) {
        $max = $num2;
    }    
    elsif ($num3 > $max ) {
        $max = $num3;
    }
}

$n1 = $ARGV[0];
chomp($n1);
$n2 = $ARGV[1];
chomp($n2);
$n3 = $ARGV[2];
chomp($n3);

maximum($n1,$n2,$n3);

解决方法

你的最大功能有缺陷:

>如果第一个数字大于第二个数字,则只尝试第三个数字.
>您没有正确检索参数; $num1和$num2都获得第一个,$num3从未设置.
>您永远不会返回$max值.
>您不打印结果.
>您没有范围变量.
>没有理由选择论点.

下面是一些代码,有五种不同的函数参数检索方法

sub max1 {
    my $num1 = $_[0];
    my $num2 = $_[1];
    my $num3 = $_[2];
    my $max = $num1;
    $max = $num2 if $num2 > $max;
    $max = $num3 if $num3 > $max;
    return $max;
}

sub max2 {
    my $num1 = shift;
    my $num2 = shift;
    my $num3 = shift;
    my $max = $num1;
    $max = $num2 if $num2 > $max;
    $max = $num3 if $num3 > $max;
    return $max;
}

sub max3 {
    my ($num1,$num2,$num3) = @_;
    my $max = $num1;
    $max = $num2 if $num2 > $max;
    $max = $num3 if $num3 > $max;
    return $max;
}

# Works for any number of arguments.
sub max4 {
    my $max = shift;
    foreach my $foo (@_) {
        $max = $foo if $max < $foo;
    }
    return $max;
}

# Works for any number of arguments.
use List::Util qw( max );

my $n1 = $ARGV[0];
my $n2 = $ARGV[1];
my $n3 = $ARGV[2];

printf "%d\n",max1($n1,$n3);
printf "%d\n",max2($n1,max3($n1,max4($n1,max($n1,$n3);

# Even simpler:
printf "%d\n",max1 @ARGV;
printf "%d\n",max2 @ARGV;
printf "%d\n",max3 @ARGV;
printf "%d\n",max4 @ARGV;
printf "%d\n",max @ARGV;

猜你在找的Perl相关文章