このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1294061094/287
#  [1] 授業単元:C言語プログラミング 
#  [2] 問題文(含コード&リンク):http://ime.nu/www.dotup.org/uploda/www.dotup.org1356601.txt 
#  
#  問題1
#  f(0)=f(1)=1. f(n)=f(n-2)+f(n-1) (n≧2)で定まる数列(Fibonacci数列)のf(n)の値と
#  f(n)までの合計を計算して、表示せよ f(20)まで
#  

'f(0)=f(1)=1. f(n)=f(n-2)+f(n-1) (n≧2)で定まる数列(Fibonacci数列)のf(n)の値とf(n)までの合計を計算して、表示せよ f(20)まで'(_n) :
        _n >= 1,
        _n =< 20,
        'f(n)までの値'(_n,_値),
        'f(n)までの合計'(_n,_合計),
        write_formatted('Fibonacci数列のf(%t)の値は%t,f(%t)までの合計は%t\n',[_n,_値,_n,_合計]).

'f(n)までの値'(_n,_値) :-
        f(_n,_値).

f(0,1).
f(1,1).
f(_n,_値) :-
        _n >= 2,
        _n_2 is _n - 2,
        _n_1 is _n - 1,
        f(_n_2,_値_2),
        f(_n_1,_値_1),
        _値 is _値_2 + _値_1.

'f(n)までの合計'(_n,_合計) :-
        findsum(_値,(
                    for(0,M,_n),
                    f(M,_値)),
                _合計の一),
        _合計 is truncate(_合計の一).