小编Jer*_*rry的帖子

C#两个类,静态成员互相引用

我想知道为什么这段代码不会以无休止的递归结束.我想这与静态成员自动初始化为默认值有关,但是有人可以"一步一步地"告诉我'a'如何获得2的值和'b'的1?

public class A
{
    public static int a = B.b + 1;
}
public class B
{
    public static int b = A.a + 1;
}

static void Main(string[] args)
{
    Console.WriteLine("A.a={0}, B.b={1}", A.a, B.b); //A.a=2, B.b=1
    Console.Read();
}
Run Code Online (Sandbox Code Playgroud)

c# static-members

18
推荐指数
3
解决办法
696
查看次数

Prolog,失败,不回溯

在SWI-Prolog中是否有任何内置谓词总会失败并阻止机器回溯 - 它会阻止程序立即执行(这不是什么fail/0)?我可以使用削减,但我不喜欢它们.

做一些事情!, fail对我来说不是问题,但为了实现我想要的东西,我必须在更多的地方使用削减,这是我不喜欢的.

prolog backtracking prolog-cut

4
推荐指数
1
解决办法
4464
查看次数

在Haskell中理解树木的问题

我试图找出这里的树木究竟是如何工作的(我理解flatten,insert和foldr).

我想在treesort中正在做的是为列表中的每个元素应用insert,从而生成一个树然后展平它.我在这里无法克服的唯一问题是列表(即函数的参数)是隐藏的(因为除了函数类型声明之外,它不会作为参数写在任何地方).

还有一件事:因为点运算符是函数组合,为什么当我改变时它是一个错误:treesort = flatten . foldr insert Leafto treesort = flatten( foldr insert Leaf )

sorting tree haskell

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

标签 统计

backtracking ×1

c# ×1

haskell ×1

prolog ×1

prolog-cut ×1

sorting ×1

static-members ×1

tree ×1