java - 如何使用递归函数代替嵌套循环?
问题描述
我想要这样的代码,以便我从用户那里获得两个输入,一个是变量 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 次嵌套循环,这不是一个好主意。有什么更好的方法来做到这一点。在这里,“在这里做某事”在每种情况下都是相同的。提前致谢。
解决方案
应该这样做:
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); }
}
}
推荐阅读
- python - CVXPY 向量约束
- javascript - 检查 div 是否可见或隐藏并切换类
- excel - 无法读取设置范围变量的对象属性
- javascript - Webpack4 优化问题
- java - 无法在谷歌云上使用 mvn 复制工件错误的文件
- ios - 使用 .p8 文件后未收到 iOS Firebase 云消息通知
- docker - Docker-compose 命令在 Windows 10 上不起作用
- firebase - 自定义 Firebase 电子邮件模板
- internationalization - Sphinx:使用已翻译的文件而不创建可翻译的文件
- java - 如何在不出现 NullPointException 的情况下将数组的大小加倍?