我在尝试着用递归去解决一个问题,总的想法是这样的
fun()
  if 发现结果OK
     返回这个结果
   else
     fun()
可是弄不出来,谁能帮帮我啊

解决方案 »

  1.   

    问题就是怎么从最最深层的递归,一旦发现解决方案之后就全部返回,我就想到一种凑合的解决问题:boolean ok = false
    type result  ...fun() 
        if ok   // 判断是否解决,设置ok了之后,这里就全都返回就行了
            return    if   发现结果 
              ok = true
              result = 设置结果 
          else 
              fun() 
    可是这种方法看起来不太好看似的,想知道有没有更elegant的写法
      

  2.   

    结果 func()
      if 发现结果
        return 结果
      else
        return  fun()这样岂不是更简单!
      

  3.   

    一个具体的例子,你看看有没有帮助
    public static String delIn(Expr expr) {
    if (expr == null && expr.equals(""))
    return "";
    String sql = "";
    if (expr.getExpr() != null && !expr.equals("")) {
    sql = delIn(expr.getExpr());
    }
    sql += getDelIn(expr);
    return sql;
    }
    public static String(Expr expr){
    Sring sql="";
    .....
    return sql;
    }
      

  4.   

    “极难”,有点言过其实:)
    如果返回结果很简单,java2000_net 的方法就可以。
    如果返回结果很复杂,那么把返回对象设置为一个非递归函数局部对象,然后在找到答案处设置该对象,返回OK即可。
    最外层函数发现返回OK,就去检查那个对象。
      

  5.   

    这个问题说极难是很不切实际的
    这个问题好解决
    你把方法加一个参数就行了,
    这个参数设成一个bool型的
    递归算法还可以这样子去判断:
    或者你写一个事件类似于treeview的
    if e.action==treeviewaction.unkown
    {
    你的代码放在这}
      

  6.   

    fun(Object obj)
       if not found
         fun(obj)
       else
        obj.XXX=result;
        return; 
      

  7.   

    看看传址传值方面的东西,递归调用函数关键是返回点,返回点取对了就可以返回,另外要看你传递进去的是什么类型的对象了,如果觉得那样做很麻烦,可以定义一个全局变量来保存你的返回值就是了,返回结果不难,就是返回点要取好。再给你个全局变量的例子:Object x;fun()
      if not found
         fun()
      else
      {
         x=result;(这里要注意,有址或值的问题,本来java是不用考虑这种问题的,但是用到递归,不得不考虑这种问题,这里要多测试就会得到你想要的结果。)
         return;
      }
      

  8.   

    fun(int i){
      if(i>5) return "ok";
      else {
        i++;
        fun(i);
      }
    }
      

  9.   

    在递归函数里面定义一个静态Bool型变量,
    在函数里面做判断,如果为false做递归,
    否则什么都不作code:
    fun() 
       static bool bFind
       if not bFind{
     
        if   发现结果OK 
              返回这个结果
               bFind=true 
          else 
              fun() 
       }
      

  10.   

    else 一定要return fun()   也就是说自己一定要return自己,不然就不是递归了
      

  11.   

    非常简单的问题,java2000_net的方法就是正解
    可以结贴了
      

  12.   

    用break哈不用返回,结果再用全局变量保存
      

  13.   

    每一层打印一个level值,需要的话打印出输入的ok值
    这样定位比较方便一些
      

  14.   

    so easy
    平时自己编几个程序
    然后自己单步的调试看看
    过程就很简单了哦
    也不是难的很吧
      

  15.   

    fun() 
      if 发现结果OK 
         返回这个结果 
       else 
         return fun() 当然要看你返回是什么了,如果是void 就不用return了PS:第一次回帖,谢谢指教