【问题标题】:Replacing recursion (with return values) with explicit stack用显式堆栈替换递归(带返回值)
【发布时间】:2011-04-29 17:15:03
【问题描述】:

我只是想知道当您需要返回值并比较它们以找到最佳解决方案(如动态编程)时,是否可以用显式堆栈替换递归?

类似的东西(它什么都不做,只是一个例子):

int resursiveFunction (int state) { 

   if (known[state]) return cache[state];
   if (state == MAX_STATE) return 0;

   int max = 0;

   for (int i = 0 ; i < 5; i++) {
      int points = curPoints (state) + recursiveFunction (state+i);
      if (points > max) max = points; 
   }

   known[state] = true;
   cache[state] = max;
   return max; 

}

【问题讨论】:

    标签: recursion stack


    【解决方案1】:

    是的。有可能。

    只需根据需要推送和弹出即可。递归只是创建一个“隐式堆栈”。您也可以展开具有 TCO 的递归函数。

    您可能会发现Stacks and Recursion Elimination(用于课程)很有用。它涵盖了消除(左递归)和模拟(堆栈)。

    【讨论】:

    • 谢谢!这就是我需要的。 “回归”是我困惑的地方。
    猜你喜欢
    • 2015-10-26
    • 2015-03-03
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    • 2021-02-04
    • 2014-04-22
    • 2015-02-09
    • 1970-01-01
    相关资源
    最近更新 更多