6 .net iteration algorithm loops dynamic
我有一个类似这样的算法:
for m = 1 to 2 initialize(work_item(m)) for l = 1 to 2 initialize(work_item(l)) for k = 1 to 2 initialize(work_item(k)) for j = 1 to 2 initialize(work_item(j)) for i = 1 to 2 initialize(work_item(i)) doSomething(work_item(i)) next doSomething(work_item(j)) next doSomething(work_item(k)) next doSomething(work_item(l)) next doSomething(work_item(m)) next
我如何迭代地编写它,使其成为动态的,这样我就不会将自己局限于固定数量的for循环(i,j,k,l,m)(即我可以做(i)或(i,j) )或(i,j,k)或(i,j,k,l)等......)?
(我正在用动态的,迭代的解决方案严格寻求答案.如果你不理解这一点,请继续阅读,从上一句开始.)
完全像使用递归一样编写算法,但使用显式堆栈对象而不是递归.即:
var stack = new Stack();
stack.Push(InitialThingy);
while(stack.Count != 0)
{
var currentItem = stack.Pop();
//Do things to current item and add things to stack as we go.
}
Run Code Online (Sandbox Code Playgroud)
private sub doStuff(depth as integer)
for i as integer = 1 to 2
initialize(work_item(i))
if depth > 1 then doStuff(depth - 1)
doSomething(work_item(i))
next
end sub
Run Code Online (Sandbox Code Playgroud)
比任何迭代解决方案都更加优雅,简洁,不那么棘手.向我倾倒所有你想要的东西,并不会让它变得不那么真实.