我有以下谓词
sqrt_table(X,Y,Result):-
X=:=Y,
Z is sqrt(X),
Result = [[X,Z]].
sqrt_table(X,Y,Result):-
X>Y,
Q is X-1,
sqrt_table(Q,Y,Z),
T is sqrt(X),
append([[X,T]],Z,Result).
当我使用它时,它输出一个圆数,即。 2,3,4,5,6,而不是浮子。如何格式化以输出浮点结果?
答案 0 :(得分:1)
可能是您的Prolog的错误。你在用什么?在SWI-Prolog中,我得到了
?- sqrt_table(5,2,L).
L = [[5, 2.23606797749979], [4, 2.0], [3, 1.7320508075688772], [2, 1.4142135623730951]]
.
非常合理,我认为......
编辑现在我理解你的问题:你需要访问子列表中的浮点数...这里我使用成员来获取对计算列表的回溯访问
2 ?- sqrt_table(5,2,L),member([_,R],L),format('~4f',R).
2.2361
L = [[5, 2.23606797749979], [4, 2.0], [3, 1.7320508075688772], [2, 1.4142135623730951]],
R = 2.23606797749979 ;
2.0000
L = [[5, 2.23606797749979], [4, 2.0], [3, 1.7320508075688772], [2, 1.4142135623730951]],
R = 2.0 ;
...