【问题标题】:Two or more recursive functions in parallel?两个或多个并行的递归函数?
【发布时间】:2016-11-30 22:14:27
【问题描述】:

有什么办法可以做

int a() {
    return b();
}

int b() {
    return a();
}

在 C++ 中?

例如在OCaml中是可以的:

【问题讨论】:

  • 你可以,但它会溢出你的堆栈。为什么要这样做?
  • 不,我的意思不是我展示的方式。就像在 OCaml 中一样进行并行递归的任何方式
  • 你能解释一下你所说的并行递归是什么意思吗?我不知道 OCaml,“并行递归 ocaml”不会产生相关结果。
  • int a(); int b(); 将声明但不定义这两个函数。然后定义可以引用它们
  • 这通常称为"mutual recursion"

标签: c++ c++14


【解决方案1】:

是的,很简单

int b();

int a() {
    return b();
}

int b() {
    return a();
}

【讨论】:

  • 这里需要转发声明,而不需要标题。两者是正交的,提出后者只会混淆 IMO。
  • 标题与前向声明高度相关
  • 如果ab 在同一个源文件中定义并且仅在该源文件中使用,我将在所述源文件中前向声明它们。标题完全不相关。
猜你喜欢
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多