我有一些从文件中读取的代码,并输出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);
答案 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";