仅输出最后一个值

时间:2012-01-29 23:38:30

标签: perl

我有一些从文件中读取的代码,并输出Fibonacci数字。例如:5 = 1,1,2,3,5

如何让我的代码只打印出最后一个值? 感谢

#!/usr/bin/perl

use strict;

my $fibFile = shift;
if (!defined($fibFile)) {
        die "[*] No file specified...\n";
}

open (FILE, "<$fibFile");
my @numbers = <FILE>;
foreach my $n (@numbers) {
        my $a = 1;
        my $b = 1;
        for (0..($n - 1)) {
                print "$a\n";
                ($a, $b) = ($b,($a + $b));
        }
        print "\n";
}
close (FILE);

1 个答案:

答案 0 :(得分:2)

我建议使用子程序从循环中取出一大块代码

sub fib {
  my $n = shift();
  my @fib = (1, 1);
  push @fib, $fib[-1] + $fib[-2] while @fib < $n;
  @fib[0 .. $n-1];
}

for my $n (1 .. 5) {
  printf "%d = %s\n", $n, join ', ', fib $n;
}

您是否需要为文件中的每个值重新计算Fibonacci系列?如果没有,那么只需将@fib数组声明移到子程序之外,就不需要重新计算数据了。


对不起,我没有回答这个问题!要仅打印序列中的最后一个值,请将代码中的循环限制更改为$n-2,并将行print "$a\n";移到循环外部以替换行print "\n";