萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 1698|回复: 13

Java 问题

[复制链接]
发表于 2006-10-28 01:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x
for(int i=1;i<=4;i++)
  for(int j=1;j<=4;j++)
    for(int k=1;k<=4;k++)
      
怎样把上面的三个for换成递归(recursive)形式 ?

谢谢!
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2006-10-28 06:29 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2006-10-28 06:37 | 显示全部楼层
仅供参考


  1. public class ForLoopToRecursiveLoop {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 forloop();
  7.                 System.out.println("-------------------");
  8.                 //recursiveloop(1, 1, 1);
  9.                 System.out.println("-------------------");
  10.                 recursiveloop(1, 1);
  11.         }

  12.         public static void forloop() {
  13.                 for (int i = 1; i <= 4; i++)
  14.                         for (int j = 1; j <= 4; j++)
  15.                                 for (int k = 1; k <= 4; k++)
  16.                                         System.out.println("" + i + j + k);

  17.         }

  18.         public static void recursiveloop(int i, int j) {
  19.                 System.out.println("" + i + j);
  20.                 j++;
  21.                 if (j <= 4) {
  22.                         recursiveloop(i, j);
  23.                 } else {
  24.                         j = 1;
  25.                         i++;
  26.                         if (i <= 4) {
  27.                                 recursiveloop(i, j);
  28.                         } else {
  29.                                 return;
  30.                         }

  31.                 }
  32.         }

  33. }
复制代码
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2006-10-28 09:33 | 显示全部楼层
哦,不是作业.


谢谢楼上的!
不过是两重的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 编辑 ]
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2006-10-28 11:25 | 显示全部楼层
还有就是如果只对于简单的三个for循环的时候,
如果限制 i,j,k取值从1...15没有问题,如果大于15他就好象出现溢出了,更何况遇到更多层for循环的时候,
通常这种问题都怎么处理呀?

由于递归程序每次进入下一次调用都要保存堆栈进行环境切换,很浪费资源,是比较容易出现内存溢出问题的,这也是为什么不推荐使用递归方式设计程序的原因。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2006-10-28 11:27 | 显示全部楼层
其实我想要的是更多层for循环,比如15层,20层,甚至更多;
怎样用递归写? 不能定义15个参数吧?!


可以定义二维数组,分别保存变量,变量当前值,变量最大值,当前变量标志等信息。至于是全局方式,还是值参数方式,具体代码应该有相应的区别。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2006-10-28 11:35 | 显示全部楼层
求方程的解

a1﹡x1+a2﹡x2+a3﹡x3+a4﹡x4+a5﹡x5+...... +a18﹡x18=-1
系数 a1, a2, a3….. a18=整数  范围=[-99999,+99999]
求  x1, x2, x3,……,x18  的所有可能取值


固然可以采用枚举法,但是最好还是换个算法,否则效率太低。

而且即便是枚举,也不一定非要递归法不可,除非目的就是要做一个递归法和其他算法的比较。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2006-10-28 11:46 | 显示全部楼层
我没想到别的方法

你提示偶一下别的方法
,谢谢拉
如果不递归,就是for,那样溢出了
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2006-10-28 11:48 | 显示全部楼层
一般而言递归溢出的几率更高,看来顺序反了,呵呵
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2006-10-28 11:53 | 显示全部楼层
原帖由 greenflute 于 2006-10-28 12:27 发表


可以定义二维数组,分别保存变量,变量当前值,变量最大值,当前变量标志等信息。至于是全局方式,还是值参数方式,具体代码应该有相应的区别。


恩,对,这应该不错
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+1, 2025-2-12 05:20 , Processed in 0.067339 second(s), 17 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表