首页 > 代码库 > 算法问题——递归算法
算法问题——递归算法
今天在做项目用到一个递归,竟然做了许久没有找到算法的错误之处,记录下。有空在思考下……
下面是错误代码:
功能是如果字符串以RTS_Mon->结尾,就截去最后面的 RTS_Mon->
处理结果应该为:1 RTS_Mon-> 2 RTS_Mon-> 3 RTS_Mon-> 4 RTS_Mon-> 5 RTS_Mon-> 6 RTS_Mon-> 7 RTS_Mon->" + "\r\n"+"RTS_Mon-(Admin)>
String str="1 RTS_Mon-> 2 RTS_Mon-> 3 RTS_Mon-> 4 RTS_Mon-> 5 RTS_Mon-> 6 RTS_Mon-> 7 RTS_Mon->" + "\r\n"+"RTS_Mon-(Admin)> RTS_Mon-> RTS_Mon->RTS_Mon->";
public String jieQu(String data) { if (data.trim().endsWith("RTS_Mon->")) { data= data.substring(0, data.trim().length() - 9).trim(); Log.i(TAG, "onCreate: 当前数据:" + temp); jieQu(temp); }else{ Log.i(TAG, "onCreate: 当前数据else:" + data); return data; } return null; }
代码错误之处是: Log.i(TAG, "onCreate: 当前数据else:" + data);这里打印的数据为正确数据,但是运行到return data;后,竟然还会集训往下跑,运行到了return null;并执行了多次return null;
后修改代码为如下,则正常运行。
public String jieQu(String data) { if (data.trim().endsWith("RTS_Mon->")) { data = data.substring(0, data.trim().length() - 9).trim(); Log.i(TAG, "onCreate: 当前数据:" + data); return jieQu(data); }else{ Log.i(TAG, "onCreate: 当前数据else:" + data); return data; } }
看错误代码<!---->
public String jieQu(String data) { Log.i(TAG, "函数:*******"); if (data.trim().endsWith("RTS_Mon->")) { data = data.substring(0, data.trim().length() - 9).trim(); Log.i(TAG, "onCreate: 当前数据:" + data); jieQu(data); }else{ Log.i(TAG, "onCreate: 当前数据else:" + data); return data; } Log.i(TAG, "返回:*******"); return null; }
当字符串最后面更有6个RTS_Mon->时,则需要进入jieQu()方法7次, Log.i(TAG, "函数:*******");打印出7次。Log.i(TAG, "返回:*******");会走6次,
Log.i(TAG, "onCreate: 当前数据else:" + data),走一次。
进入if(){}后,走完代码,都会走return null;只有最后一次走入 else{} return data;
算法问题——递归算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。