2013-11-15 158 views
2

我想创建一个有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);   
       } 
      } 
      } 
     } 
     } 
    } 
    } 
}   
+0

你介意缩进它,好吗? – haccks

回答

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); 
    } 
} 
+0

@chux yep,修正它。 –

+0

虽然我并不真的认为这是必要的,因为在问题的代码片段中,除了ints之外,其他任何变量都没有声明。 –

+0

由于这似乎是一个学习者的问题,因此您的体验可能不需要的特异性通常在此处保证。有趣的是,OP和你使用了一个_global'y'。不知道如何用本地的方法来做到这一点:'recursive()'可能需要传递并返回'y'。 Hmmmm。但是它的星期五晚上...... – chux