【问题标题】:convert nested loops to recursive将嵌套循环转换为递归
【发布时间】:2013-11-29 09:28:10
【问题描述】:

我想创建一个深度为 9 的极小极大树。我使用了 9 个嵌套循环和太多变量。现在我想将此循环转换为递归。谢谢你的回答。这是我的代码。

int a,b,c,d,e,f,g,h;
for(a=0;a<9;a++) 
{
  y=y->branch[a];
  yap(y,8);           
  for(b=0;b<8;b++) 
  {
    y=y->branch[b];
    yap(y,7);                            
    for(c=0;c<7;c++) 
    {         
      y=y->branch[c];
      yap(y,6);                 
      for(d=0;d<6;d++) 
      {
        y=y->branch[d];
        yap(y,5);                        
        for(e=0;e<5;e++) 
        {                 
          y=y->branch[e];
          yap(y,4);                 
          for(f=0;f<4;f++) 
          {
            y=y->branch[f];
            yap(y,3);
            for(g=0;g<3;g++) 
            {
              y=y->branch[g];
              yap(y,2);
              for(h=0;h<2;h++) 
              {
                y=y->brancg[h];
                yap(y,1);         
              }
            }
          }
        }
      }
    }
  }
}         

【问题讨论】:

  • 您介意缩进吗?

标签: c loops recursion tree


【解决方案1】:
void recursive(int max)
{
    int a;
    for(a=0;a<max;a++) 
    {
        y=y->branch[a];
        yap(y,max - 1);
        if (max > 2) 
            recursive(max - 1);
    }
}  

【讨论】:

  • 虽然我真的不认为这是必要的,因为在问题的代码 sn-p 中除了整数之外没有声明其他变量。
  • 由于这似乎是一个学习者的问题,您的经验可能不需要的特异性在这里通常是有保证的。有趣的是,OP 和您使用 _global y。想知道如何用本地人做到这一点:recursive() 可能需要传递并返回y。嗯。但它是星期五晚上......
猜你喜欢
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 2018-05-10
  • 2015-06-25
相关资源
最近更新 更多