【问题标题】:Converting nested for loops into recursion (c++) [duplicate]将嵌套的for循环转换为递归(c ++)[重复]
【发布时间】:2021-09-13 04:01:16
【问题描述】:

有没有一种方法可以将嵌套的 for 循环逻辑转换为递归方法?

例如:

for(int i=0; i<n*2; i++)
    for(int j=0; j<n; j++)

使这个递归的最佳方法是什么?

【问题讨论】:

  • 使这种基于递归的方法是保持原样。不要在这里使用递归。或者换一种说法,请详细说明您认为这里需要递归的原因,或者为什么它可以有任何优势。
  • @George 是正确的。固定。
  • @yuunosch 这非常无用。为了理论上的缘故,我正在尝试使其递归。
  • 对不起,我真的很想帮忙。所以你会想要这个基于递归的,不管有什么缺点?你有多少递归经验。你能递归数到 10 吗?
  • 如果您分享问题,递归转换会更容易。至于递归,我们需要一个基本案例来停止递归

标签: c++ recursion


【解决方案1】:

你不应该在这里使用递归。
但如果你只是好奇(假设你知道 stack overflow),那么函数如下:

void recursiveFor(int i, int j, int n) {
    if (!(i < n * 2)) {  
        return;
    }

    // Function body.

    if (j + 1 < n) {
        recursiveFor(i, j + 1, n);
    } else {
        recursiveFor(i + 1, 0, n);
    }
}  

此外,编译器会在函数中添加额外的 prologue and epilogue,另一方面会优化循环(大多数 CPU 也有循环优化器,例如 Loop Stream Detector),因此请始终尽量选择循环而不是递归函数。

【讨论】:

猜你喜欢
  • 2019-04-14
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
相关资源
最近更新 更多