Java 使用递归而不截断?
我无法理解这个递归方法,因为返回方法似乎没有在每次运行时添加charAt(0)方法 假设您得到了一个反转字符串的方法(这是正确的):Java 使用递归而不截断?,java,recursion,Java,Recursion,我无法理解这个递归方法,因为返回方法似乎没有在每次运行时添加charAt(0)方法 假设您得到了一个反转字符串的方法(这是正确的): 公共字符串反向限制(字符串s){ 如果(s.length()为: rs(Hello) rs(ello) + H (rs(llo) + e) + H ((rs(lo) + l) + e) + H (((rs(o) + l) + l) + e) + H o + l + l + e + H 请注意,您只将s.substring(1),而不是s.substr
公共字符串反向限制(字符串s){
如果(s.length()为:
rs(Hello)
rs(ello) + H
(rs(llo) + e) + H
((rs(lo) + l) + e) + H
(((rs(o) + l) + l) + e) + H
o + l + l + e + H
请注意,您只将s.substring(1)
,而不是s.substring(1)+s.charAt(0)
传递给递归调用。仅供参考,这是一种效率极低的字符串反转方法。它必须进行字符串串联(构造新的字符串对象)在递归的每一级。使用StringBuilder
会更有效率。我发现重复的(答案相同)存储在缓冲区中,直到递归达到其基本情况?局部变量存储在堆栈上。阅读
rs(Hello)
rs(ello) + H
(rs(llo) + e) + H
((rs(lo) + l) + e) + H
(((rs(o) + l) + l) + e) + H
o + l + l + e + H