我尝试了多种变体,但似乎都没有。有什么想法吗?
int[] array = new int[n];
for(int i = 0; i < array[0]; i++){
for(int j = 0; j < array[1]; j++){
....
for(int k = 0; k < array[array.length - 1]; k++){
do something with i,j, ... , k
}
}
}
所以如果我先不知道数组的长度,那么我就不能为循环编写某些层,我不知道该怎么做。 提前致谢。
答案 0 :(得分:0)
使用递归:
arr = [a, b, c, ... n]
function iterate_one_level(arr, indices) {
if (arr == []) {
do_something_with_indices(indices)
return;
}
for (let i=0; i<arr.length; i++) {
iterate_one_level(arr[1:], indices + [i])
}
}
或者,您的语言可能与itertools.product
答案 1 :(得分:0)
执行此操作的规范方法是使用递归:
deep_loop(array[], index[]) {
if array.length == 0 // Finally reached the innermost loop
do something with index[:]
else // Go down one loop level
// loop on the first array element
for n in range 0:array[0] {
// recur on the rest of the array
// append this index to the sequence
deep_loop( array[1:], index[:] + [n] )