大家好,所以我有一个大学项目所需的代码。我的代码是递归的,需要花费大量的时间来加载。我试着将它转换为迭代但我似乎无法做到它按顺序输出。请你帮我转换一下吗?谢谢。
void getBrewCount(int n, int i, int j){
if( i ==n && j == n){ //reach the (n,n) point
count++;
}else if( i > n || j > n){//wrong way
return;
}else {
if(i==8 && j==5){
j++;
}
if(i==11 && j==5){
j+=2;
}
if(i==15 && j>=14){
i+=2;
}
if(i==21 && j>=22){
i++;
}
getBrewCount(n, i +1, j );
getBrewCount(n, i , j +1);
}
答案 0 :(得分:2)
在递归中你有一个结束条件。当满足这个条件时,递归结束,你就会冒泡"从递归。当你想迭代地做同样的事情时,递归的结束条件应该是你的循环的条件。超出范围后,递归结束。你可以写while()循环,它将循环直到它超出范围,因此while(i< n&& j< n){}。我的while循环递增计数并在达到范围时自行打破。但是我不知道你的功能的真正功能是什么,所以你可能想稍微改变一下。
void getBrewCount(int n, int i, int j) {
while (i < n && j < n) {
// my ending condition
if (i == n && j == n) {
++count;
break;
}
/* code that updates i, j e.g.
if (i == 10)
++j;
*/
}
return;
}