Recursion Prolog中的结束递归

Recursion Prolog中的结束递归,recursion,prolog,Recursion,Prolog,我不太熟悉Prolog,所以我不确定递归是否正是我面临的问题。在我的程序中,我试图找到一个列表C中最大的子数组,它的平均和大于给定的数字K 我的输入示例如下: 11 3 42 -10 8 1 11 -6 -12 16 -15 -11 13 11是列表(N)中的数字,3是K,然后是列表C中的数字。 答案是5(-6-12 16-15-11)。数字的符号错误 在运行我的程序后,我确实找到了正确的答案,但输出必须按照老师给出的方式打印: ?- longest('f1.txt', Answer), w

我不太熟悉Prolog,所以我不确定递归是否正是我面临的问题。在我的程序中,我试图找到一个列表
C
中最大的子数组,它的平均和大于给定的数字
K

我的输入示例如下:

11 3

42 -10 8 1 11 -6 -12 16 -15 -11 13
11
列表(N)
中的数字,
3
K
,然后是列表
C
中的数字。 答案是
5(-6-12 16-15-11)。
数字的符号错误

在运行我的程序后,我确实找到了正确的答案,但输出必须按照老师给出的方式打印:

?- longest('f1.txt', Answer), writeln(Answer), fail.
5
false.
而我得到的结果是:

?- longest('f1.txt', Answer), writeln(Answer), fail.
5

ERROR: Stack limit (1.0Gb) exceeded
ERROR:   Stack sizes: local: 1Kb, global: 0.9Gb, trail: 0Kb
ERROR:   Stack depth: 19,169,466, last-call: 100%, Choice points: 3
ERROR:   In:
ERROR:     [19,169,466] user:reverse(_230033468, [length:11],[length:19,169,441])
ERROR:     [12] user:result('<garbage_collected>', _230033504, 3, 11)
ERROR:     [10] system:'<meta-call>'('<garbage_collected>')
ERROR:     [9] '$toplevel':toplevel_call('<garbage_collected>')
ERROR:     [8] '$toplevel':stop_backtrace('<garbage_collected>')
ERROR:
ERROR: Use the --stack_limit=size[KMG] command line option or
ERROR: ?- set_prolog_flag(stack_limit, 2_147_483_648). to double the limit.

节目最后超时了。有关于我做错了什么的线索吗?

请提供您的谓词定义
    longest(File,A) :-
        read_input(File, N, K, C),
        result(C,A,K,N).