【问题标题】:Flowchart for two recursive functions两个递归函数的流程图
【发布时间】:2015-10-01 19:43:03
【问题描述】:

我有两个简单的功能:

一)

drawRight(x){ // where x is integer
      if(x == 0 )
         draw();
      else{
         drawRight(x-1);
         doSomething();
         drawLeft(x-1);
      }
   }

b) (与 a) 非常相似)

drawLeft(x){ // where x is integer
      if(x == 0 )
         draw();
      else{
         drawRight(x-1);
         doSomething2();
         drawLeft(x-1);
      }
   }

我的问题是:如果我调用例如 drawRight(5) 甚至可以绘制流程图吗?我只为自调用递归函数做了流程图,但找不到这个的解决方案。

任何帮助将不胜感激。

【问题讨论】:

    标签: recursion flowchart


    【解决方案1】:

    递归函数通常使用我所知道的任何编程语言中的堆栈来调用和处理。流程图可能不完全遵循编程语言运行具有递归函数的代码所遵循的规则,但它显示了流程图如何运行递归 sn-p:

    请注意,函数以相反的顺序添加到堆栈中。例如,如果drawRight 调用drawRightdoSomethingdrawLeft,它们将作为drawLeftdoSomethingdrawRight 添加到堆栈中。这样drawRight 将首先被调用,然后是doSomething,最后是drawLeft。处决将按预期进行。

    如果使用大小写而不是条件元素,流程图的连线会更少。

    【讨论】:

      【解决方案2】:

      我相信流程图应该是这样的。我是为 drawRight(2) 做的,因为它很快就会变得非常庞大

      终端调用的实际顺序是

      • 做某事
      • 做某事
      • 做某事2

      【讨论】:

      • 我不知道如何正确调用我需要的英文图,也许是框图。我需要这样的东西:prntscr.com/8mo9mz,如果可以完成,它会为每个 'n' 值“工作”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      • 2021-04-19
      相关资源
      最近更新 更多