トップページに戻る    次のProblemへ    前のProblemへ

Problem2 フィボナッチ数列の偶数の項の総和

フィボナッチ数列の項は前の2つの項の和である。
最初の2項を1,2とすれば、最初の10項は以下の通りである。

1,2,3,5,8,13,21,34,55,89, ...
数列の項が400万を超えない範囲で、偶数の項の総和を求めよ。


SQL

declare
    type SuuretuArrDef is table of pls_Integer index by binary_integer;
    SuuretuArr SuuretuArrDef;
    cnt pls_Integer;

    SumVal pls_Integer := 0;
begin
    Loop
        cnt := SuuretuArr.Count;
        if cnt > 0 then
            if SuuretuArr(cnt) > 4000000 then
                exit;
            end if;
        end if;
        if cnt = 0 then
            SuuretuArr(1) := 1;
        elsif cnt = 1 then
            SuuretuArr(2) := 2;
        else
            SuuretuArr(cnt+1) := SuuretuArr(cnt)+SuuretuArr(cnt-1);
        end if;

        cnt := SuuretuArr.Count;
        if mod(SuuretuArr(cnt),2) = 0 then
            SumVal := SumVal + SuuretuArr(cnt);
        end if;
    end Loop;
    DBMS_Output.Put_Line('合計=' || to_char(SumVal));
end;
/


実行結果

合計=4613732


解説

C#のListジェネリックの変数名の末尾語はList
C#のDictionaryジェネリックの変数名の末尾語はDict
PL/SQLの結合配列の変数名の末尾語はArr
としたい。

C#での解