加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 06:11:46 所属栏目:大数据 来源:网络整理
导读:我正在尝试编写一个脚本来查找3个数字中最大的数字,并通过命令行参数传递它们 我只是想知道我在这段代码中写的错误是什么,谢谢你的帮助. sub maximum($) { ($num1) = @_ ; ($num2) = @_ ; ($num2) = @_ ; $max = $num1; if ($num2 $num1) { $max = $num2; }
我正在尝试编写一个脚本来查找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 "%dn",max1($n1,$n3);
printf "%dn",max2($n1,max3($n1,max4($n1,max($n1,$n3);

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读