1

編集:解決しました。以下の解決策を参照してください。

最初の 10 個の数に対して次のフィボナッチ数プログラムを作成しました。しかし、私はそれを機能させることができません。それは私にそれを言い続けUse of uninitialized value $secondLast in addition (+) at fib.plx line 22.、それは永遠に実行されます。私は初心者の Perl プログラマーなので、エラーは非常に単純であると確信しています。ありがとう。

#!/usr/bin/perl
use warnings;
use strict;

sub fib(\@$);

my @defaultNums = (1,1);
my $max = 10;
fib(@defaultNums,10);

sub fib(\@$)
{
        my $nums_ref = $_[0];
        my $max = $_[1];
        foreach(@{$nums_ref})
        {
                print "$_, ";
        }
        print "\n";
        my $last = pop (@{$nums_ref});
        my $secondLast = pop (@{$nums_ref});
        my $sum = $last + $secondLast;
        push (@{$nums_ref}, $sum);
        if( scalar  @{$nums_ref} >= $max) { return; }
        fib (@{$nums_ref},$max);
        print "\n";
}

編集:解決しました。以下の解決策を参照してください。

4

2 に答える 2

2

私は自分の間違いを理解しました。毎回2回配列をポップオフしているので、$ sumをプッシュする前に、これらの数値をプッシュバックすることを忘れないでください。とにかく、ありがとう。

于 2012-06-30T20:11:38.653 に答える