09/05/30 20:33:50
>>54
fは3引数でその第一引数に 1/1->1/3->1/9->1/27 ... 逆数分数の遷移が
第二引数に 1->3->9->27 と次の逆数計算の分母からきます。
第三引数はその逆数計算の累計が計算されるところですが、論理変数のままで、
実値がここに入って次の呼び出しに渡されるというようなことはありません。
再帰が終了して漸く計算が始まるように見えます。それが第三節の最後の
f(P2,M,S2), の後にある S is S2 + P です。
f(P,_,P) :- P < 0.00001,!. だと分数が0.00001より小さくなったときその最小分数を起点に
再帰的に逆数分数が加算されて解を求めるという宣言であり、
f(P,_,0.0) :- P < 0.0001,!. は0.00001より小さくなった時の逆数分数は加算せずに
再帰的に逆数分数が加算されて解が求まるという宣言です。
第三節で次の逆数分数を先読み的に計算してしまっている点に注意してください。