递归ocaml堆栈溢出

时间:2017-05-01 17:13:36

标签: function recursion ocaml stack-overflow

我试图绘制分形:因为每个圆圈都被分开了,我想在它的左边和右边绘制一半大小的圆圈。这是我的代码:

let rec drawCircle x y r =
    let halfSize = r/2 in
        draw_circle x y r;
        drawCircle (x+r) y halfSize;
        drawCircle (x-r) y halfSize;;

它编译但是当我运行它时我得到堆栈溢出。问题是为什么以及如何在此功能中修复它?

1 个答案:

答案 0 :(得分:2)

您的代码没有任何终止递归的条件。

例如,当r == 1像素时,不要再次调用drawCircle。或者您选择的任何其他情况。