フィボナッチ数列の計算

HOME > Programing > Pascal > フィボナッチ数列の計算

注意

  • このサイトの利用によって生じた損害については当方では責任を負いかねますのでご了承ください。

コード1(再帰関数を用いる方法)

                    program Fib1(input, output);

                    {Fibonacci数を計算する}
                    function Fib(n : integer) : integer;
                    begin
                        {Fib(0) = 0}
                        if n <= 0 then
                            Fib := 0
                    
                        {Fib(1) = 1}
                        else if n = 1 then
                            Fib := 1
                    
                        {Fib(n) = Fib(n-2) + Fib(n-1)}
                        else
                            Fib := Fib(n-2) + Fib(n-1)
                    end;
                    
                    procedure main;
                    var i : integer;
                    begin
                        for i := 1 to 10 do
                            writeln('Fib(', i:2, ') = ', Fib(i):5)
                    end;
                    
                    begin
                        main
                    end.
                

コード2(変数のみで行う方法)

                    program Fib2(input, output);

                    {Fibonacci数を計算する}
                    procedure Fib(n : integer);
                    var x, y, tmp, i : integer;
                    begin
                        {Initialize}
                        x := 0;
                        y := 1;
                    
                        if n <= 0 then
                            writeln('Fib(', n:2, ') = ', x:5)
                        else if n = 1 then
                            writeln('Fib(', n:2, ') = ', y:5)
                        else
                        begin
                            for i := 1 to n do
                            begin
                                {Fibonacci数の計算}
                                tmp := x + y;
                                x := y;
                                y := tmp;
                    
                                {出力}
                                writeln('Fib(', i:2, ') = ', x:5)
                            end
                        end
                    end;
                    
                    begin
                        Fib(10)
                    end.