Recursion Prolog中的结束递归
我不太熟悉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
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).