Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;“堆栈空间不足”;在LearnOcaml中编译代码时出错_Ocaml - Fatal编程技术网

&引用;“堆栈空间不足”;在LearnOcaml中编译代码时出错

&引用;“堆栈空间不足”;在LearnOcaml中编译代码时出错,ocaml,Ocaml,好奇:我在学习Ocaml中编写代码,当我编译代码时,编译器说:“堆栈外错误”。我想这是因为我写了大量的代码。所以我想知道我怎样才能检查堆栈有多满?我写了大约450-500行代码。有几条新线路。 也可能是堆栈中执行的代码数量占用了所有堆栈。所以我只想知道问题的原因和解决方法?以下是显示错误的图片: 当我只将编辑器中的部分代码复制到顶层时,错误就消失了。堆栈利用率并不取决于程序的大小或其中的行数,它取决于程序的运行时行为,主要是由于循环递归。例如,此小函数将使用任意大小的堆栈: let rec f

好奇:我在学习Ocaml中编写代码,当我编译代码时,编译器说:“堆栈外错误”。我想这是因为我写了大量的代码。所以我想知道我怎样才能检查堆栈有多满?我写了大约450-500行代码。有几条新线路。 也可能是堆栈中执行的代码数量占用了所有堆栈。所以我只想知道问题的原因和解决方法?以下是显示错误的图片:


当我只将编辑器中的部分代码复制到顶层时,错误就消失了。

堆栈利用率并不取决于程序的大小或其中的行数,它取决于程序的运行时行为,主要是由于循环递归。例如,此小函数将使用任意大小的堆栈:

let rec f () = f () + f ()

在您提供的图片中,我可以看到至少一种未绑定递归(即,肯定不会终止的递归)。调用
insert
时,将其应用于整个树
m
,而不是子树。因此,在每次新的调用中,实际上什么都没有改变,而您得到的是一个无限循环。

堆栈利用率并不取决于程序的大小或其中的行数,它取决于程序的运行时行为,主要是由于循环递归。例如,此小函数将使用任意大小的堆栈:

let rec f () = f () + f ()

在您提供的图片中,我可以看到至少一种未绑定递归(即,肯定不会终止的递归)。调用
insert
时,将其应用于整个树
m
,而不是子树。因此,在每次新的调用中,实际上什么都没有改变,而您得到的是一个无限循环。

虽然我同意问题可能是一个失控的递归(除非示例树非常大),但在
insert
中我看不到问题。
m
不是树,而是要插入的元素
n
是一棵树,它被简化了。虽然我同意问题可能是一个失控的递归(除非示例树非常大),但我在
insert
中没有看到问题。
m
不是树,而是要插入的元素
n
是树,并被缩减。