我在这个问题上看到了这个引用:什么是构建Web服务的好函数语言?
特别是Scala不支持尾调用消除,除了自递归函数,这限制了你可以做的组合种类(这是JVM的一个基本限制).
这是真的?如果是这样,那么创建这个基本限制的JVM是什么呢?
我有一个这种类型的 json 对象。
{
"id": "001",
"type": "A",
"value": "aaaaa",
"data:": {},
"path": ["001"],
"children": [
{
"id": "002",
"type": "A",
"value": "aaaaa",
"data:": {},
"path": ["001", "002"],
"children": []
},
{
"id": "003",
"type": "A",
"value": "aaaaa",
"data:": {},
"path": ["001", "003"],
"children": [
{
"id": "00001",
"type": "B",
"children": []
}
]
},
{
"id": "004",
"type": "A",
"value": "aaaaa",
"data:": {},
"path": ["001", "004"],
"children": [
{
"id": "005",
"type": "A",
"value": "aaaaa",
"data:": {},
"path": ["001", …Run Code Online (Sandbox Code Playgroud) class Program
{
static void Main(string[] args)
{
Test(0);
}
static void Test(int i)
{
if (i > 30000)
{
return;
}
Test(i + 1);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么在调用上面的示例时获取递归函数并抛出StackOverflowException.
(因为超过默认的递归堆栈大小?)
但我想知道如何解决这个问题.
谢谢.