C ++递归代码迭代

时间:2016-12-10 13:45:09

标签: c++ recursion

大家好,所以我有一个大学项目所需的代码。我的代码是递归的,需要花费大量的时间来加载。我试着将它转换为迭代但我似乎无法做到它按顺序输出。请你帮我转换一下吗?谢谢。

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);
 }

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;
}