JAVA 能否用递归处理循环嵌套?

来源:百度知道 编辑:UC知道 时间:2024/05/22 20:01:00
public class InnerLoops {
public static void main(String[] args) {
int max = 9;

//这个是4层的循环嵌套,这种做法难道不能用一个递归来做?
//现在是4层的循环,要是层数很多,那不是要写死了,而且也容易出错,期待高手来解答
for(int i=0; i<max; i++){
for(int j=0; j<max; j++){
for(int k=0; k<max; k++){
for(int l=0; l<max; l++){
//......
}
}
}
}
}
}
****************************************
问题自己解决掉了,谢谢各位了,234558050给了我最大的启发,分给他了.
解决过程我这里贴不上,我另外贴到:
http://zhidao.baidu.com/question/77971880.html
有兴趣的可以赐看一下,请多多指教.

for循环控制的是次数,结果这样看就清楚了(3,345,3456).3次循环.
在执行每次外循环时,X都会被重新赋值=2,
第一次外循环,I=3,J=3,X=2,X<J,所以执行X+=1,X=3;
第二次外循环,I=2,J=5,X=2;X<J,执行X+=1,X=3;因为X=3还是小于J=5,再次X+=1,X=4;X=4还是小于J=5,再执行次,所以,X=3,4,5;
第3次外循环,道理和第二次一样,内循环执行4次,所以X=3,4,5,6
OVER 这样就可以了,一步一步来

递归算法要有一个终止条件,一般在程序中以if(....)这样形式给出,在这里我只能用一个普通变量了
可以试试:
int counts=4;
public void function(){
counts--;
if(counts=0)
fun();
else
for(int i=0;i<max;i++)
function();

}
public void fun(){
....
}

这种方法看似很麻烦,但是比用递归调用要好一点,从系统资源的方面说,他要比递归调用自身的函数要占用更少的空间,递归调用的时候会占用相当的内存来保护现场,之后还要恢复现场,递归函数不是很好的方法!
for循环看上去会有一点点的乱,但写起来还不算麻烦,适当的代码缩进能让程序变得友好,也能很清晰的看出程序运行的结构。
在这里我结合你的想法和递归函数的空间开销,选择了一个还算可以的方法,代码如下:
public class Text {

int function(int max, int sum)
{
for(int i=0;i<=max;i++)
{
sum=sum+i;
System.out.println(sum);
}
return sum;
}
/**
* @p