このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1260532772/206
#  [1] 授業単元: プログラミング1 
#  [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10285.txt 
#  
# 発展課題2
# 任意の整数Xを入力すると、整数Xの階乗を算出されるプログラムを作成せよ。
# ただし、0および負の整数を入力すると、「値が不適当です。」とメッセージが出るようにする。
# 階乗はn!=1×2×3・・・×nで表される。実行結果の例を以下に示す。
# ------------------------------------------------
# 整数を入力して下さい:5
# 5の階乗は120です。
# ------------------------------------------------
# ヒント:if文の中にfor文やwhile文を入れ込むこともできます。

'任意の整数Xを入力すると、整数Xの階乗を算出される'(_階乗の答え) :-
        ゼロ以外の正の整数を得る(X),        
        階乗(X,_階乗の答え),!.

階乗(0,1) :- !.
階乗(1,1) :- !.
階乗(N,X) :-
        N2 is N - 1,
        階乗(N2,Y),
        X is N * Y,!.

ゼロ以外の正の整数を得る(N) :-
        write('正の整数を入力してください : '),
        get_integer(N),
        N > 0,!.
ゼロ以外の正の整数を得る(N) :-
        write('値が不適切です\n'),
        ゼロ以外の正の整数を得る(N).