相关疑难解决方法(0)

C#中的堆栈容量

有人能告诉我C#中的堆栈容量是多少.

我正在尝试使用30,000个项目的数组形成3D网格闭合对象.

.net c# clr stack

49
推荐指数
5
解决办法
4万
查看次数

Mono中的Tailcall消除

我有一个.NET 4.0应用程序,它大量使用尾递归(用F#编程).它在.NET VM上运行良好,但在Mono-3.0.1上运行时没有堆栈.

我试过跑步,mono --optimize=tailc但似乎没有改变任何东西.

有没有办法强制单声道消除尾部呼叫?有没有办法增加单声道的最大堆栈大小?

.net mono

19
推荐指数
1
解决办法
314
查看次数

如何实现尾递归列表追加?

像这样的简单追加函数(在F#中):

let rec app s t =
   match s with
      | [] -> t
      | (x::ss) -> x :: (app ss t)
Run Code Online (Sandbox Code Playgroud)

当s变大时会崩溃,因为函数不是尾递归的.我注意到F#的标准追加功能不会因大列表而崩溃,因此必须以不同方式实现.所以我想知道:追尾的尾递归定义怎么样?我提出了这样的事情:

let rec comb s t =
   match s with
      | [] -> t
      | (x::ss) -> comb ss (x::t)
let app2 s t = comb (List.rev s) t 
Run Code Online (Sandbox Code Playgroud)

哪个有效,但看起来很奇怪.是否有更优雅的定义?

f# tail-recursion append

9
推荐指数
2
解决办法
6789
查看次数

标签 统计

.net ×2

append ×1

c# ×1

clr ×1

f# ×1

mono ×1

stack ×1

tail-recursion ×1