2013-11-15 130 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