如何从递归方法中找到变量值?

时间:2019-01-13 15:10:15

标签: java methods implicit-conversion

我需要帮助从变量v中查找值。这种方法来自我尝试做的练习。它从此输入中请求返回值:m(2, "43912");

我在System.out.print上做了一个main()以显示返回值:

public static void main (String[]args) {
    System.out.println(m(2,"43912"));
}

此输出:CDEF21912

我了解CDEF部分和219部分,但我不理解的是为什么v返回为12的原因。

static int m(int i, String s) {   
  int v = 0;   
  System.out.print((char)(i+'A'));   
  if (i < s.length()) {   
    char c = s.charAt(i);    
    v = m(i + 1, s) + c - '0';     
    System.out.print(c);     
  }     
  return v;     
}

1 个答案:

答案 0 :(得分:0)

Step1:
  print:C  
Step2:
  print:D
Step3:
  print:E  
Step4:
  print:F  at the same time, finishing function m  and return v=0
Step5:
  i=4,c=2,v=0+'2'-'0',print 2 and return v=2
Step6:
  i=3,c=1,v=2+'1'-'0',print 1 and return v=3
Step7:
  i=2,c=9,v=3+'9'-'0',print 9 and return v=12

直到现在打印为“ CDEF219”,然后将执行System.out.println(12),您知道函数m的最后一次返回(来自Step7),因此将12添加到“ CDEF219”,并且结果变为“ CDEF21912”。下次,您可以使用断点来帮助您理解。希望我的回答可以帮助您。