このディレクトリの索引
#  
#  与えられた数 x の3乗根を返す cube_root(x)とこれを呼び出して、1から10までの
#  3乗根を表示するプログラムを作成せよ
#  

'与えられた数 x の3乗根を返す cube_root(x)とこれを呼び出して、1から10までの3乗根を表示する' :-
        between(1,10,_x),
        cube_root(_x,_3乗根),
        writef('%t: ',[_x]),
        format('~6f\n',[_3乗根]),
        _x = 10.

cube_root(_x,_3乗根) :-
        _x_2 is _x / 2,
        二分法で3乗根を収束させる(100,_x,_x,_x_2,_3乗根).

二分法で3乗根を収束させる(0,_値,_3乗根,_,_3乗根) :- !.
二分法で3乗根を収束させる(N,_値,_値_1,_値_2,_3乗根) :-
        _値 >= _値_2 * _値_2 * _値_2,
        _値_3 is (_値_1 + _値_2) / 2,
        N_1 is N - 1,
        二分法で3乗根を収束させる(N_1,_値,_値_1,_値_3,_3乗根).
二分法で3乗根を収束させる(N,_値,_値_1,_値_2,_3乗根) :-
        _値 < _値_2 * _値_2 * _値_2,
        _値_3 is _値_2 / 2,
        N_1 is N - 1,
        二分法で3乗根を収束させる(N_1,_値,_値_2,_値_3,_3乗根).