如何从递归方法中找到变量值?
How to find a variable value from a recursive method?
我需要帮助找到变量 v
的值。这个方法来自我尝试做的一个练习。它从这个输入中请求 return 值:m(2, "43912");
我在 main()
上做了一个 System.out.print
来显示 return 值:
public static void main (String[]args) {
System.out.println(m(2,"43912"));
}
此输出:CDEF21912
我理解CDEF
部分和219
部分,我只是不明白为什么v
return是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;
}
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的最后一个return(来自Step7),所以12会是添加到"CDEF219",结果变成"CDEF21912"。下次,你可以使用断点来帮助你understand.Hope我的回答可以帮助你。
我需要帮助找到变量 v
的值。这个方法来自我尝试做的一个练习。它从这个输入中请求 return 值:m(2, "43912");
我在 main()
上做了一个 System.out.print
来显示 return 值:
public static void main (String[]args) {
System.out.println(m(2,"43912"));
}
此输出:CDEF21912
我理解CDEF
部分和219
部分,我只是不明白为什么v
return是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;
}
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的最后一个return(来自Step7),所以12会是添加到"CDEF219",结果变成"CDEF21912"。下次,你可以使用断点来帮助你understand.Hope我的回答可以帮助你。