動態決定巢狀迴圈層數的方法
阿新 • • 發佈:2019-02-19
1使用遞迴
void cycle(int sCnt ,int zCnt){
return ;
sCnt--;
if(sCnt == 0 && zCnt ==0)
{
return;
}
//for(int i=0;i<10;i++)
{
TRACE("%d\n",sCnt);
}
cycle(sCnt ,zCnt );
}
2.使用一個數組儲存迴圈層數,通過改變陣列元素的值決定再哪層迴圈多少次
void func(int depth, int n) { int cur = 0; //int *tab = (int *)malloc(n * sizeof(int)); int tab[20]={0};//tab[0]最外層,tab[1]次外層 for (*tab = 0; cur >= 0; ) { ++tab[cur]; //if (tab[cur] <= n) { if (tab[cur] <= iii[cur]) {//如果tab[cur]層的迴圈次數小於該層規定的最大次數 if (cur == depth - 1) {//如果該層是最內層 int i; for (i = 0; i < depth; ++i) { //TRACE("%d ", tab[i]); //iii[i] = i; } TRACE("%d,%d,%d,%d,%d,%d,%d\n", tab[0], tab[1], tab[2], tab[3], tab[4], tab[5], tab[6]); //TRACE("%d,%d,%d,%d,%d,%d,\n", // iii[0],iii[1],iii[2],iii[3],iii[4],iii[5]); } else { ++cur; tab[cur] = 0; } } else { --cur; } } }