Multiple Loop
To Recurrence Function





example A

int x,y,counter=0;

for ( x =0 ; x<=9 ; x++ ) {

       for ( y =0 ; y<=9 ; y++ ) {


                  counter++;

       }


}

結果  # -> counter = 100



example B

int x,y,z,counter=0;

for ( x =0 ; x<=9 ; x++ ) {

       for ( y =0 ; y<=9 ; y++ ) {

               for ( z =0 ; z<=9 ; z++ ) {

                  counter++;

                }

       }

}


結果 # -> counter = 1000




START

思路 1 -> 把 x y z 改成 陣列來表示,變成 vari[1],vari[2],vari[3]

思路 2 -> 在 vari[1] 的時候,做多重迴圈內做的動作 ( 本程式做的是 counter++; 這個指令)

for ( vari[3] =0 ; vari[3]<=9 ; vari[3]++ ) {

       for (
vari[2] =0 ; vari[2]<=9 ; vari[2]++ ) {

               for ( vari[1] =0 ; vari[1]<=9 ; vari[1]++ ) {

                  counter++;

                }

       }

}



思路三 -> 改成Recurrence Function (遞迴函數),該函數接受一個參數,來決定要做幾層多重迴圈
                承思路二,在參數為1的時候,就不再呼叫自己。 (遞迴停止點)

void recurrence(int now){
    
         for(vari[now]=0;vari[now]<=9;vari[now]++)
          { 
   if(now==1) { counter++; } else { recurrence(now-1); }   }
    
}


arrow
arrow
    全站熱搜

    finalfrank 發表在 痞客邦 留言(0) 人氣()