【发布时间】:2018-01-14 10:52:11
【问题描述】:
我在很多地方查找并试图了解如何通过递归获得任意数量的嵌套 for 循环。但我的理解显然是错误的。
我需要在 n 维空间中以网格模式生成坐标。实际的问题有不同范围的不同坐标,但为了先把更简单的事情做对,我在下面的代码中使用了相同的整数步坐标范围。
#include <iostream>
using namespace std;
void recursion(int n);
int main(){
recursion(3);
return 0;
}
void recursion(int n)
{
if(n!=0){
for(int x=1; x<4; x++){
cout<<x<<" ";
recursion(n-1);
}
}
else cout<<endl;
}
我想要并且期望输出是:
1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
1 3 3
2 1 1
2 1 2
2 1 3
2 2 1
2 2 2
2 2 3
2 3 1
2 3 2
2 3 3
3 1 1
3 1 2
3 1 3
3 2 1
3 2 2
3 2 3
3 3 1
3 3 2
3 3 3
相反,我得到的输出是
1 1 1
2
3
2 1
2
3
3 1
2
3
2 1 1
2
3
2 1
2
3
3 1
2
3
3 1 1
2
3
2 1
2
3
3 1
2
3
我就是不知道出了什么问题。任何帮助找出错误甚至生成坐标的另一种方式将不胜感激。谢谢!
【问题讨论】:
-
你不需要递归。回忆一下小学时代的加法。但是如果你坚持递归,你需要将前缀向下传递给每个递归调用,因为你想在每一行上重复前缀;你不能像现在这样在顶部打印一次。
-
使用您的调试器一步一步地完成它,并观察它的运行情况。你会看到错误,如果不是如何修复它
-
@IgorTandetnik 如果您能详细说明一下,那就太好了。
标签: c++ for-loop recursion coordinates