C 递归代码迭代
C++ recursive code to iterative
嗨,所以我有这个在大学中项目所需的代码。我拥有的代码是递归的,并且花费了很多时间来加载。我尝试将其转换为迭代但是我似乎无法按顺序进行操作,因为输出是不同的。请帮助我转换它吗?谢谢。
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;
}
相关文章:
- 为什么此代码的矢量迭代器没有停止?
- 我的代码在作为参数传入 .begin() 时不起作用,但在我将 .begin() 转换为迭代器后工作
- 如果我在下面的代码中使用 list 而不是 vector,为什么在我尝试在迭代器之间执行减法的行中编译失败?
- 在每次循环迭代时停止代码执行毫秒
- 在下面的 C++ 代码中,*(迭代器)和 *(++迭代器)是什么意思?
- 为什么在此代码中隐式转换为常量迭代器失败?
- 我通过迭代加法将二进制数转换为十进制并检查单个字符(请参阅代码)的方法有什么问题?
- 在此C++代码中,迭代器引用列表的哪个元素?
- 让宏将迭代参数传递到通过宏变量提供的代码体中
- 迭代列表以查找元素的出现.代码问题
- 重复输出的类型是怎么回事,它如何区分迭代次数和 Ascii 代码?
- 循环在此代码中仅迭代一次,而在另一个代码中正确迭代
- 如何使用迭代器显示以下代码的输出
- 如何调整我的代码以确保我的迭代代码接受用户输入
- 不使用循环如何迭代代码指令
- 在 OpenGL 中绘制立方体。迭代代码较短,但不起作用
- 段树的迭代代码
- ICU迭代代码点
- C++向量迭代代码无法编译,当向量作为对常量的引用传递时
- 使用模拟测试迭代代码——它有意义吗?