Java 如何动态决定需要多少个循环?
以下是主题: 我有一个Java 如何动态决定需要多少个循环?,java,for-loop,Java,For Loop,以下是主题: 我有一个链接列表,如果列表有3个元素,我想为它列出一个完整的真值表,例如: a b c <--- the three elements in list 0 0 0 0 0 1 0 1 0 1 0 0 1 1 1 1 1 0 1 0 1 0 1 1 abc循环的数量需要与元素的数量相匹配。有两种方法可以解决这个问题 使用递归,这样就有一个循环,并且该方法为下一级循环调用自己 使用一个循环,重复2^n次并提取出组件值 如果您只想要一个真值表,那么简单的解决方案是: 代
链接列表
,如果列表有3个元素,我想为它列出一个完整的真值表,例如:
a b c <--- the three elements in list
0 0 0
0 0 1
0 1 0
1 0 0
1 1 1
1 1 0
1 0 1
0 1 1
abc循环的数量需要与元素的数量相匹配。有两种方法可以解决这个问题
- 使用递归,这样就有一个循环,并且该方法为下一级循环调用自己
- 使用一个循环,重复2^n次并提取出组件值
如果您只想要一个真值表,那么简单的解决方案是:
代码:
int len=3;
int num=(int)Math.pow(2,len);
对于(int i=0;i我不会用Java为您编写它,但下面是一个伪代码,让您了解如何递归地解决问题:
l = ['a','b','c']
def f(l, result):
if len(l) == 0:
print result
return
first = l[0]
rest = l[1:]
f(rest, result + [(first,0)])
f(rest, result + [(first,1)])
f (l, [])
这应该打印如下内容:
[('a', 0), ('b', 0), ('c', 0)]
[('a', 0), ('b', 0), ('c', 1)]
[('a', 0), ('b', 1), ('c', 0)]
[('a', 0), ('b', 1), ('c', 1)]
[('a', 1), ('b', 0), ('c', 0)]
[('a', 1), ('b', 0), ('c', 1)]
[('a', 1), ('b', 1), ('c', 0)]
[('a', 1), ('b', 1), ('c', 1)]
听起来递归可能很有用。以前读过一些,为什么要问?@ZagorulkinDmitrySo你发布了一个未经测试的非java解决方案。你为什么首先发布这个?你应该发布至少一个更像java的伪代码。(java中没有切片)嗯,shengy似乎很难找到一个算法来解决这个问题,所以我提出了一个算法,将Java实现留给他,因为我认为这对他的教育更有益。你说“这应该打印出来”。这就像“我不确定”。你如何测试伪代码?无论如何,我不想在这里争论。:-)谢谢你的基本逻辑提示!
l = ['a','b','c']
def f(l, result):
if len(l) == 0:
print result
return
first = l[0]
rest = l[1:]
f(rest, result + [(first,0)])
f(rest, result + [(first,1)])
f (l, [])
[('a', 0), ('b', 0), ('c', 0)]
[('a', 0), ('b', 0), ('c', 1)]
[('a', 0), ('b', 1), ('c', 0)]
[('a', 0), ('b', 1), ('c', 1)]
[('a', 1), ('b', 0), ('c', 0)]
[('a', 1), ('b', 0), ('c', 1)]
[('a', 1), ('b', 1), ('c', 0)]
[('a', 1), ('b', 1), ('c', 1)]