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); } }
}
留言列表