首页 > 解决方案 > 如何使用递归函数代替嵌套循环?

问题描述

我想要这样的代码,以便我从用户那里获得两个输入,一个是变量 n,第二个是变量 t,其中 1<=n<=4。我想制作 n 个嵌套循环,其中每个循环运行 t 次。我用Java编写了一个代码来做到这一点:

int n=in.nextInt();
int t=in.nextInt();
for(int l1=1;l1<=n;l1++)
{
    if(n==1)
    {
        //do something here
    }
    else
    {
        for(int l2=11;l2<=m;l2++)
        {
            if(n==2)
            {
                //do something here
            }
            else
            {
                for(int l3=1;l3<=t;l3++)
                {
                    if(n==3)
                    {
                        //do something here
                    }
                    else
                    {
                        for(int l4=1;l4<=t;l4++)
                        {
                            //do something here
                        }
                    }   
                }
            }
        }
    }
}

但是在这里,如果我想要 n 在 1<=n<=10 的范围内,那么我有 10 次嵌套循环,这不是一个好主意。有什么更好的方法来做到这一点。在这里,“在这里做某事”在每种情况下都是相同的。提前致谢。

标签: javaloopsrecursion

解决方案


应该这样做:

interface Op { public void apply(); }

void f(int start, int end, int crucialStep, Op doSomething) {
    for (int i = start; i <= end; i++) {
        if (i == crucialStep) { doSomething.apply(); }
        else { f(1, 10, crucialStep + 1, doSomething); }
    }
}

推荐阅读