为了账号安全,请及时绑定邮箱和手机立即绑定

灵活数量的 for 循环 - Java

灵活数量的 for 循环 - Java

开心每一天1111 2021-08-25 15:16:05
我正在寻找一种方法来使用灵活数量的 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)。



查看完整回答
反对 回复 2021-08-25
  • 1 回答
  • 0 关注
  • 172 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信