このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/362
#  再帰関数を使わず、nの階乗を求めるプログラムを教えて下さい。 
# 

'再帰関数を使わず、nの階乗を求める'(_n,_nの階乗) :-
        nの階乗を表す式文字列(_n,_式文字列),
        式文字列を解析して式を評価する(_式文字列,_nの階乗).

nの階乗を表す式文字列(_n,_式文字列) :-
        length(L,_n),
        findall(M,(
                    append(L0,[_|_],L),
                    length([_|L0],M)),
                L2),
        atomic_list_concat(L2,'*',_式文字列).

式文字列を解析して式を評価する(_式文字列,_nの階乗) :-
        atom_to_term(_式文字列,_式,_),
        _nの階乗 is _式.



%  length/2 も append/3 も atomic_list_concat/3 も再帰述語ですから
%  これは解答にはなっていません。