集算器递归改写法了,真好!

😄 😄 无意中发现 spl 的递归改写法了,以前调用递归的时候必须写成 func(fx,x,y),现在可以直接写成 fx(x,y) 了,这个改的太好了,小小的改动,语句简洁了不少。如下所示:

以前的递归写法,每一次调用,都要写成 func(dfs,x,y):

imagepng

现在的写法,可以省略 func() 这部分,直接写成递归名称:

imagepng

这个改的好,好的很👍 👍 ,哈哈,谢谢老贼,谢谢 SPL 的大佬们🙏 🙏

说起递归,我还有一个关于递归堆栈大小的问题。递归很容易爆栈,因为默认的堆栈大小是有限制的,有个治标不治本的办法就是把堆栈大小适当调大一点,尽可能延迟爆栈。集算器也可以调整堆栈大小的,对吧,我不知道这样调整会不会有其他问题出现,比如,在 Mac 版本的集算器里可以这样调整,在安装目录下的 bin 文件夹里有搁 config.txt 文件,加上 -Xss8m 就可以了:

imagepng

这样调整后就能延迟爆栈了,集算器也能正常工作。

但是,同样的手法应用于 WIN 版本的集算器里,也是在安装目录下的 bin 文件夹中的 config.txt 里添加一样的内容,结果就出问题了,直接导致 jvm 出错,打不开集算器。这个出错内容我没有截图保存,我也不敢尝试了,因为卸载安装有点耗时😂。我的问题是:

1、这样操作是不是不科学,毕竟是治标不治本的方法;
2、如果非要调整堆栈大小,WIN 版本的集算器里要如何写;
3、最好是用代码来改善递归爆栈,虽然迟早都会爆栈,但比调整堆栈大小要科学一些,对吧,那集算器 spl 要如何写代码才能最大程度延迟递归的堆栈溢出。比如,JS 里有一种方法叫 "蹦床"Trampoline,可以让尾递归变成循环,我在 PQ 里倒是模拟出来了,但 spl 不知道怎么写:

PQJSjpg

大佬们方便的时候能不能指导一下?