zoukankan      html  css  js  c++  java
  • 算法问题——递归算法

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

    下面是错误代码:

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

    今天多一点积累,明天少一分烦恼
  • 相关阅读:
    cshtml常用标签
    模板方法模式(Template Method)
    day10-python-协程异步IORabbitMQ队列 edis缓存
    Gitlab+Jenkins自动化部署
    day9-python-进程、线程和协程
    day8-python-socket编程
    day7-python-面向对象进程进阶
    day6-python-面向对象
    day5-python-常用模块
    zabbix监控rabbitmq
  • 原文地址:https://www.cnblogs.com/galibujianbusana/p/6413587.html
Copyright © 2011-2022 走看看