C 递归代码迭代

C++ recursive code to iterative

本文关键字:迭代 代码 递归      更新时间:2023-10-16

嗨,所以我有这个在大学中项目所需的代码。我拥有的代码是递归的,并且花费了很多时间来加载。我尝试将其转换为迭代但是我似乎无法按顺序进行操作,因为输出是不同的。请帮助我转换它吗?谢谢。

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

在递归中您有一个结局条件。当满足这种情况时,递归结束,您会从递归中"冒泡"。当您想进行相同的迭代操作时,递归的结尾条件应该是循环的条件。您的递归在范围内结束后结束。您可以while while()循环编写,该循环将循环直至范围超出范围,因此(i< n&& j< n){}。我的时循环会增加并在达到范围时正确地自身。但是,我不知道您的功能的真正功能是什么,所以您可能想更改它。

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