小编Wol*_*sch的帖子

为什么即使使用延续传递样式,遍历大型二叉树也会导致堆栈溢出?

专家F#3.0一书的第9章介绍了如何在遍历二叉树时使用延续传递样式来避免堆栈溢出.我编写的树遍历代码几乎与本书中的代码完全相同,但我仍然得到了堆栈溢出.我的代码如下:

type 'a Tree =
  | Leaf   of 'a
  | Branch of 'a Tree * 'a Tree

let rec mkLeftLeaningTree n tree =
  if n = 0 then
    tree
  else
    Branch (mkLeftLeaningTree (n - 1) tree, Leaf "right")

let leftLeaningTree1 = Leaf "left"
let leftLeaningTree2 = mkLeftLeaningTree 30000 leftLeaningTree1
let leftLeaningTree3 = mkLeftLeaningTree 30000 leftLeaningTree2
let leftLeaningTree4 = mkLeftLeaningTree 30000 leftLeaningTree3
let leftLeaningTree5 = mkLeftLeaningTree 30000 leftLeaningTree4
let leftLeaningTree6 = mkLeftLeaningTree 30000 leftLeaningTree5

let sizeContAcc tree =
  let rec …
Run Code Online (Sandbox Code Playgroud)

mono f# binary-tree tail-recursion continuation-passing

6
推荐指数
1
解决办法
220
查看次数

Isabelle/HOL:THE构造表示什么?

THE x. A在Isabelle/HOL标准库的源代码中看到了构造.这个结构表示什么?它似乎与之相似SOME x. A.

isabelle

3
推荐指数
1
解决办法
72
查看次数

为什么Git的单键设置不起作用?

我正在使用 Git 2.7.4。我的~/.config/git/config文件中有以下代码段:

[interactive]
    singleKey = true
Run Code Online (Sandbox Code Playgroud)

但是,当我跑步时,在git add -p选择了一个大块头后,我仍然必须按 Enter 键。这可能是什么原因?

git

3
推荐指数
1
解决办法
134
查看次数