问题就是怎么从最最深层的递归,一旦发现解决方案之后就全部返回,我就想到一种凑合的解决问题:boolean ok = false type result ...fun() if ok // 判断是否解决,设置ok了之后,这里就全都返回就行了 return if 发现结果 ok = true result = 设置结果 else fun() 可是这种方法看起来不太好看似的,想知道有没有更elegant的写法
结果 func() if 发现结果 return 结果 else return fun()这样岂不是更简单!
这个问题说极难是很不切实际的 这个问题好解决 你把方法加一个参数就行了, 这个参数设成一个bool型的 递归算法还可以这样子去判断: 或者你写一个事件类似于treeview的 if e.action==treeviewaction.unkown { 你的代码放在这}
fun(Object obj) if not found fun(obj) else obj.XXX=result; return;
看看传址传值方面的东西,递归调用函数关键是返回点,返回点取对了就可以返回,另外要看你传递进去的是什么类型的对象了,如果觉得那样做很麻烦,可以定义一个全局变量来保存你的返回值就是了,返回结果不难,就是返回点要取好。再给你个全局变量的例子:Object x;fun() if not found fun() else { x=result;(这里要注意,有址或值的问题,本来java是不用考虑这种问题的,但是用到递归,不得不考虑这种问题,这里要多测试就会得到你想要的结果。) return; }
type result ...fun()
if ok // 判断是否解决,设置ok了之后,这里就全都返回就行了
return if 发现结果
ok = true
result = 设置结果
else
fun()
可是这种方法看起来不太好看似的,想知道有没有更elegant的写法
if 发现结果
return 结果
else
return fun()这样岂不是更简单!
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;
}
如果返回结果很简单,java2000_net 的方法就可以。
如果返回结果很复杂,那么把返回对象设置为一个非递归函数局部对象,然后在找到答案处设置该对象,返回OK即可。
最外层函数发现返回OK,就去检查那个对象。
这个问题好解决
你把方法加一个参数就行了,
这个参数设成一个bool型的
递归算法还可以这样子去判断:
或者你写一个事件类似于treeview的
if e.action==treeviewaction.unkown
{
你的代码放在这}
if not found
fun(obj)
else
obj.XXX=result;
return;
if not found
fun()
else
{
x=result;(这里要注意,有址或值的问题,本来java是不用考虑这种问题的,但是用到递归,不得不考虑这种问题,这里要多测试就会得到你想要的结果。)
return;
}
if(i>5) return "ok";
else {
i++;
fun(i);
}
}
在函数里面做判断,如果为false做递归,
否则什么都不作code:
fun()
static bool bFind
if not bFind{
if 发现结果OK
返回这个结果
bFind=true
else
fun()
}
可以结贴了
这样定位比较方便一些
平时自己编几个程序
然后自己单步的调试看看
过程就很简单了哦
也不是难的很吧
if 发现结果OK
返回这个结果
else
return fun() 当然要看你返回是什么了,如果是void 就不用return了PS:第一次回帖,谢谢指教