我正在寻找一种方法来使用灵活数量的 for 循环或一些可以做同样事情的解决方案。基本上我想要一个变量在每个循环中从 0 到 100 并遍历所有组合。for 循环是嵌套的,所以如果我正在为两个代理寻找解决方案,我有:for(int i = 0; i<=100; i++){ for(int j = 0; j<=100, j++){ //do some stuff with i and j }}但我事先不知道需要多少代理,所以我正在寻找一种灵活的方法来获得相同的结果。这可能是一个非常简单的问题,但我无法找到给我一个可行解决方案的威胁。编辑:有人向我指出这个问题还不够清楚,我将尝试展示我想要实现的目标:假设我有 n 个代理,如果 n == 1 那么我需要这个:for(int j = 0; j<=100, j++){ //do some stuff with j}对于 n == 2 我想要:for(int i = 0; i<=100; i++){ for(int j = 0; j<=100, j++){ //do some stuff with i and j } }对于 n == 3 另一个查看这些现有的等等,但它需要灵活,因为用户被要求输入 n 并且可以输入任何整数。//EndEDIT 我希望这更清楚提前谢谢你!
1 回答
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
我认为实现这一目标的最简单方法是递归。
假设您希望每个范围具有相同的限制(即 i、j、k 等从 0..100 开始),您可以这样做:
void recursive(List<Integer> values, int depth) {
if (values.size() == depth) {
// Do the thing you want to do with the values, i.e. the "innermost loop".
} else {
// This is intentionally Integer, so that remove removes that value, not the element at that index.
for (Integer a = 0; a <= 100; ++a) {
values.add(a);
recursive(values, depth);
values.remove(a);
}
}
}
当depth列表中的值少于值时,这会依次将范围内的每个值添加到列表中,然后递归。
一旦列表中有足够的值,它就会做你想做的“事情”。该列表将包含depth值,您可以使用 访问单个值values.get(i)。
添加回答
举报
0/150
提交
取消