Java 问题
for(int i=1;i<=4;i++)for(int j=1;j<=4;j++)
for(int k=1;k<=4;k++)
怎样把上面的三个for换成递归(recursive)形式 ?
谢谢! 作业......?? 仅供参考
public class ForLoopToRecursiveLoop {
/**
* @param args
*/
public static void main(String[] args) {
forloop();
System.out.println("-------------------");
//recursiveloop(1, 1, 1);
System.out.println("-------------------");
recursiveloop(1, 1);
}
public static void forloop() {
for (int i = 1; i <= 4; i++)
for (int j = 1; j <= 4; j++)
for (int k = 1; k <= 4; k++)
System.out.println("" + i + j + k);
}
public static void recursiveloop(int i, int j) {
System.out.println("" + i + j);
j++;
if (j <= 4) {
recursiveloop(i, j);
} else {
j = 1;
i++;
if (i <= 4) {
recursiveloop(i, j);
} else {
return;
}
}
}
}
哦,不是作业.
谢谢楼上的!
不过是两重的for循环
其实我想要的是更多层for循环,比如15层,20层,甚至更多;
怎样用递归写? 不能定义15个参数吧?!
还有就是如果只对于简单的三个for循环的时候,
如果限制 i,j,k取值从1...15没有问题,如果大于15他就好象出现溢出了,更何况遇到更多层for循环的时候,
通常这种问题都怎么处理呀?
EX:(求方程的解)
a1﹡x1+a2﹡x2+a3﹡x3+a4﹡x4+a5﹡x5+...... +a18﹡x18=-1
系数 a1, a2, a3….. a18=整数范围=[-99999,+99999]
求x1, x2, x3,……,x18的所有可能取值
[ 本帖最后由 jeanie 于 2006-10-28 12:02 编辑 ]
还有就是如果只对于简单的三个for循环的时候,
如果限制 i,j,k取值从1...15没有问题,如果大于15他就好象出现溢出了,更何况遇到更多层for循环的时候,
通常这种问题都怎么处理呀?
由于递归程序每次进入下一次调用都要保存堆栈进行环境切换,很浪费资源,是比较容易出现内存溢出问题的,这也是为什么不推荐使用递归方式设计程序的原因。
其实我想要的是更多层for循环,比如15层,20层,甚至更多;
怎样用递归写? 不能定义15个参数吧?!
可以定义二维数组,分别保存变量,变量当前值,变量最大值,当前变量标志等信息。至于是全局方式,还是值参数方式,具体代码应该有相应的区别。
求方程的解
a1﹡x1+a2﹡x2+a3﹡x3+a4﹡x4+a5﹡x5+...... +a18﹡x18=-1
系数 a1, a2, a3….. a18=整数范围=[-99999,+99999]
求x1, x2, x3,……,x18的所有可能取值
固然可以采用枚举法,但是最好还是换个算法,否则效率太低。
而且即便是枚举,也不一定非要递归法不可,除非目的就是要做一个递归法和其他算法的比较。 我没想到别的方法
你提示偶一下别的方法
,谢谢拉
如果不递归,就是for,那样溢出了 一般而言递归溢出的几率更高,看来顺序反了,呵呵 原帖由 greenflute 于 2006-10-28 12:27 发表
可以定义二维数组,分别保存变量,变量当前值,变量最大值,当前变量标志等信息。至于是全局方式,还是值参数方式,具体代码应该有相应的区别。
恩,对,这应该不错
页:
[1]
2