代码之家  ›  专栏  ›  技术社区  ›  DARK FOREST

为什么——i和i-1在递归中产生不同的输出?

  •  -1
  • DARK FOREST  · 技术社区  · 2 年前

    我有两个方法,不同的是一个有-i1,另一个有I-1,但它们产生的输出不同。

     String s1 = "axbdcg";
            String s2 ="aazzzzzzzzzzzzcbc";
            System.out.println(method(s1,s2,s1.length()-1,s2.length()-1));
    
    
     int method(String s1, String s2, int i1, int i2){
        if(s1.length() == 0 || s2.length() == 0) return 0;
        if(i1 < 0|| i2 < 0) return 0;
        if(s1.charAt(i1) ==  s2.charAt(i2)) return 1+  method(s1,s2,--i1,--i2);
    int left = method(s1,s2,--i1,i2);
    
    int right =  method(s1,s2,i1,--i2);
             return Math.max(left ,right);
        }
    

    该方法给出2作为输出

         int method(String s1, String s2, int i1, int i2){
        if(s1.length() == 0 || s2.length() == 0) return 0;
        if(i1 < 0|| i2 < 0) return 0;
        if(s1.charAt(i1) ==  s2.charAt(i2)) return 1+  method(s1,s2,--i1,--i2);
    int left = method(s1,s2,i1-1,i2);
    
    int right =  method(s1,s2,i1,--i2);
             return Math.max(left ,right);
        }
    

    给出3作为输出。

    1 回复  |  直到 2 年前
        1
  •  2
  •   Oleg Cherednik    2 年前

    foo(--i) 指以下内容:

    1. 递减 i 具有 -1
    2. 为指定新值
    3. 看跌修正值 方法 foo()

    P.S。 已修改


    foo(i - 1) 指以下内容:

    1. 递减 具有 -1
    2. 看跌修正值 方法 foo()

    P.S。 未修改


    所以不同的是当你打电话 method(s1,s2,i1,--i2) 在第一片段中, 正在改变,但在第二次改变中——不是。