• 算法问题——递归算法


    今天在做项目用到一个递归,竟然做了许久没有找到算法的错误之处,记录下。有空在思考下……

    下面是错误代码:

    功能是如果字符串以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->" + " "+"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->" +
                "
    "+"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;

    今天多一点积累,明天少一分烦恼
  • 相关阅读:
    QuartzQuartz定时任务
    jdbc模糊查询、分页查询、联合查询
    PreparedStatement
    web服务器简述
    JDBC基本操作
    RMI
    Http编程
    2020毕业季业务开发宝典
    程序设计流程图
    系统概要框图
  • 原文地址:https://www.cnblogs.com/galibujianbusana/p/6413587.html
Copyright © 2020-2023  润新知