【发布时间】:2018-03-06 15:13:59
【问题描述】:
这是我在 Prolog 中代码的主要部分:
state(N, Sf) :-
get_initial_state('test.csv',S),
state_sequence(N, S, Sf).
state_sequence(N, S, S).
state_sequence(N, S, Sf) :-
transition_state(S, S, [], Sn),
N > 0,
N1 is N - 1,
state_sequence(N1, Sn, Sf).
transition_state 只是一组在这里无关紧要的规则。它是一个递归,不断获取下一个状态的值,直到 N 达到 0。
然后例如我想要状态的第 48 个结果。所以我的查询是
state(48,S).
那我需要一直按;并且序言不断告诉我下一个状态,然后直到第 48 个它导致错误。 那么如何在不告诉我每个州的结果的情况下直接得到第48个结果呢??
【问题讨论】:
-
你可以尝试将
state_sequence的第一个子句改成state_sequence(0, S, S). -
@gusbro 是正确的。对于
N的任何值,state_sequence(N, S, S).成功。