这个for循环如何改成递归的?会递归的话应该很简单
时间:2011-03-24
来源:互联网
作用是对一个矩阵(每行的列数不等),输出组合
比如下面的xx()输出:
1,4,7
1,4,8
1,4,9
1,5,7
1,5,8
1,5,9
2,4,7
2,4,8
2,4,9
2,5,7
2,5,8
2,5,9
3,4,7
3,4,8
3,4,9
3,5,7
3,5,8
3,5,9
sub xx {
my $fldEnum;
push(@$fldEnum,[1,2,3]);
push(@$fldEnum,[4,5]);
push(@$fldEnum,[7,8,9]);
for my $i(0..$#{$fldEnum->[0]}) {
for my $j(0..$#{$fldEnum->[1]}) {
for my $k(0..$#{$fldEnum->[2]}) {
print "$fldEnum->[0][$i],$fldEnum->[1][$j],$fldEnum->[2][$k]\n";
}
}
}
}
现在是我fldEnum里的行数会变化,应该要用到递归才知道,因为用for循环需要事先知道行数,写在代码里。
我觉得换成递归应该不难,可是我真不会递归,一点也不会。。。
谢谢
比如下面的xx()输出:
1,4,7
1,4,8
1,4,9
1,5,7
1,5,8
1,5,9
2,4,7
2,4,8
2,4,9
2,5,7
2,5,8
2,5,9
3,4,7
3,4,8
3,4,9
3,5,7
3,5,8
3,5,9
sub xx {
my $fldEnum;
push(@$fldEnum,[1,2,3]);
push(@$fldEnum,[4,5]);
push(@$fldEnum,[7,8,9]);
for my $i(0..$#{$fldEnum->[0]}) {
for my $j(0..$#{$fldEnum->[1]}) {
for my $k(0..$#{$fldEnum->[2]}) {
print "$fldEnum->[0][$i],$fldEnum->[1][$j],$fldEnum->[2][$k]\n";
}
}
}
}
现在是我fldEnum里的行数会变化,应该要用到递归才知道,因为用for循环需要事先知道行数,写在代码里。
我觉得换成递归应该不难,可是我真不会递归,一点也不会。。。
谢谢
作者: samansakk 发布时间: 2011-03-24
[[1],[2],[3]]
#1 迭代[4,5]把每个item push入以上的每个元素变成:
[[1,4],[1,5],[2,4],[2,5],[3,4],[3,5]]
#2 迭代[7,8,9]做和#1相同的操作。最终结果就出来了:
[[1,4,7],[1,4,8],[1,4,9]......]
#1 迭代[4,5]把每个item push入以上的每个元素变成:
[[1,4],[1,5],[2,4],[2,5],[3,4],[3,5]]
#2 迭代[7,8,9]做和#1相同的操作。最终结果就出来了:
[[1,4,7],[1,4,8],[1,4,9]......]
作者: foolbirdflyfirst 发布时间: 2011-03-24
谢谢。不过我想你没明白。
如果我有 [11,12,13.。。]又一个数组的话。 这样又需要再迭代了。现在是我在写代码的时候,差不知道有多少个这种数组需要迭代,所以需要用递归的吧。
如果我有 [11,12,13.。。]又一个数组的话。 这样又需要再迭代了。现在是我在写代码的时候,差不知道有多少个这种数组需要迭代,所以需要用递归的吧。
引用 1 楼 foolbirdflyfirst 的回复:
[[1],[2],[3]]
#1 迭代[4,5]把每个item push入以上的每个元素变成:
[[1,4],[1,5],[2,4],[2,5],[3,4],[3,5]]
#2 迭代[7,8,9]做和#1相同的操作。最终结果就出来了:
[[1,4,7],[1,4,8],[1,4,9]......]
[[1],[2],[3]]
#1 迭代[4,5]把每个item push入以上的每个元素变成:
[[1,4],[1,5],[2,4],[2,5],[3,4],[3,5]]
#2 迭代[7,8,9]做和#1相同的操作。最终结果就出来了:
[[1,4,7],[1,4,8],[1,4,9]......]
作者: samansakk 发布时间: 2011-03-24
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28