このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1291471791/746
#  [1] 授業単元:プログラミング演習  
#  [2] 問題文(含コード&リンク) 
#  問題2  30個目までのフィボナッチ数を順に計算し、その結果を順に配列 fib に格納しなさい。 また計算終了後に、 a_1, a_2, a_16, a_25 に相当する結果を表示しなさい。 
#  <実行例>  
#  a_01 = 1  
#  a_02 = 1  
#  a_16 = 987  
#  a_25 = 75025  
#  

'30個目までのフィボナッチ数を順に計算し、その結果を順に配列 fib に格納しなさい。また計算終了後に、a_1, a_2, a_16, a_25 に相当する結果を表示しなさい。'(_fib) :-
        '30個目までのフィボナッチ数を順に計算し、その結果を順に配列 fib に格納しなさい。'(_fib),
        'また計算終了後に、a_1, a_2, a_16, a_25 に相当する結果を表示しなさい。'(_fib).

'30個目までのフィボナッチ数を順に計算し、その結果を順に配列 fib に格納しなさい。'(_fib) :-
        length(_fib,30),
        'n番目までのフィボナッチ数列'(_fib).

n番目までのフィボナッチ数列([1]) :- !.
n番目までのフィボナッチ数列([1,1]) :- !.
n番目までのフィボナッチ数列([1,1|R]) :-
        n番目までのフィボナッチ数列の二([1,1|R]).

n番目までのフィボナッチ数列の二([A,B,C]) :-
        C is A + B,!.
n番目までのフィボナッチ数列の二([A,B,C|R]) :-
        C is A + B,
        n番目までのフィボナッチ数列の二([B,C|R]),!.

'また計算終了後に、a_1, a_2, a_16, a_25 に相当する結果を表示しなさい。'(_fib) :-
        append(_,[_何番目|R],[1,2,16,25]),
        length([_|L0],_何番目),
        append(L0,[_何番目のフィボナッチ数|_],_fib),
        write_formatted('a_%02d = %t\n',[_何番目,_何番目のフィボナッチ数]),
        R = [].