prolog递归和增量问题

prolog递归和增量问题,prolog,Prolog,我在使用递归将分钟数转换为小时数和剩余分钟数时遇到问题,计算剩余分钟数效果很好,但我似乎无法计算小时数: mins_to_hours_and_mins(N, H, M):- N >= 60 -> H1 = H + 1, N1 = N - 60, H = H1, mins_to_hours_and_mins(N1, H1, M). mins_to_hours_and_mins(N, H, M):- N < 60 ->

我在使用递归将分钟数转换为小时数和剩余分钟数时遇到问题,计算剩余分钟数效果很好,但我似乎无法计算小时数:

mins_to_hours_and_mins(N, H, M):-
    N >= 60 ->  
    H1 = H + 1,
    N1 = N - 60,
    H = H1,
    mins_to_hours_and_mins(N1, H1, M).

mins_to_hours_and_mins(N, H, M):-
    N < 60 ->  
    H = H,
    M is N.
“分钟到小时”和“分钟(40,小时,米)”的输出:


注意:我必须为此使用递归,我必须为查询使用2个规则和3个参数

Prolog不使用=/2将数学表达式的结果分配给变量,它使用。因此,将类似于
H1=H+1
的语句更改为
H1是H+1
。我将语句更改为is而不是=,我得到的错误参数没有充分实例化此示例练习以及您遇到的问题在其他StackOverflow答案中有很好的记录,请搜索答案,它很容易找到。另外,我会改成
(我一直在寻找关于参数没有充分实例化的问题,我似乎可以找到解决方案
H = H+1,
M = 10
false
M = 40