1

我正在使用SWISH编写 Prolog,并且我有一个将分钟转换为小时的程序。

我的分钟输出很好,但是我的小时输出为H = 0+1+1而不是H = 2. 有什么办法可以解决这个问题吗?

我尝试过使用 a#=而不是=is其他人在另一篇文章中推荐的那样,但它在在线编辑器上不起作用,我也无法使用桌面编辑器。

m2hm(T, H, M):-
    T < 60,
    H = 0,
    M is T.

m2hm(T, H, M):-
    T >= 60,
    T1 is T-60,
    H = H1+1,
    m2hm(T1, H1, M). 
4

1 回答 1

2

您需要使用is而不是=

H is H1 +1

你在之前的行中正确地做到了

T1 is T-60

看到你下面的评论后,

如果我这样做,它会给我错误:is/2: 参数没有充分实例化

您真正的问题不是您在原始问题中提出的问题。

这个代码的答案Arguments are not sufficiently instantiated在这个问题中得到了回答。

于 2019-02-14T12:44:03.403 回答