public class recursiveReverse {
public static String reverse(String str){
if (str == null) {
return null;
}
if (str.length() <= 1) {
return str;
}
return reverse(str.substring(1)) + str.charAt(0);
}
public static void main(String[] args) {
reverse("car");
}
}
我第一次遇到if(str.length()&lt; = 1)返回true,然后我迷路了。
答案 0 :(得分:1)
正如其他人所指出的那样,通过调试器下的代码逐步完成服务。
这里的代码是&#34; printf&#39;&#34;:
Test.java =&gt;
<tr>
<td colspan="4" align="center">FIRST ARRAY</td>
<td colspan="4" align="center">SECOND ARRAY</td>
</tr>
<tr>
<td colspan="4" align="center">
<table>
<tr>
<?php
$i = 0;
foreach ($damage_codes as $row) : ?>
<?= ($i % 4 == 0) ? "</tr><tr>" : ""; ?>
<?= "<td>[".$row->DAMAGE_ID . "]" . $row->NAMA_DAMAGE . "</td>"; ?>
<?php
$i++;
endforeach;
?>
</tr>
</table>
</td>
<td colspan="4" align="center">
<table>
<tr>
<?php
$i = 0;
foreach ($repair_codes as $row) : ?>
<?= ($i % 4 == 0) ? "</tr><tr>" : ""; ?>
<?= "<td>[".$row->REPAIR_ID . "]" . $row->NAMA_REPAIR . "</td>"; ?>
<?php
$i++;
endforeach;
?>
</tr>
</table>
</td>
</tr>
输出,java Test =&gt;
public class Test {
public static String reverse(String str){
System.out.println("-->str=" + str);
if (str == null) {
System.out.println("<--str=null");
return null;
}
if (str.length() <= 1) {
System.out.println("<--str=str");
return str;
}
String result = reverse(str.substring(1)) + str.charAt(0);
System.out.println("<--result=" + result);
return result;
}
public static void main(String[] args) {
reverse("car");
}
}
答案 1 :(得分:0)
让我们一次拿一行。
如果要反转的字符串为null,则该方法返回null。
如果字符串要反转为长度&lt; = 1,则按原样返回。
如果字符串较长,它将返回从位置1开始的反向子字符串,与字符串的第一个字符连接。
所以: 反向(&#34; a&#34;) - &gt;一个
反向(&#34; ab&#34;) - &gt;反向(&#34; b&#34;)+&#34; a&#34; - &GT; &#34; BA&#34;
反向(&#34; abc&#34;) - &gt;反向(&#34; bc&#34;)+ a - &gt;反向(&#34; c&#34;)+&#34; b&#34; +&#34; a&#34;
等
答案 2 :(得分:0)
它是递归调用反向函数,直到字符串的长度达到一个字符。
在上面的例子中,要反转的字符串是CAR。 在第一遍中,它将成为{reverse(AR)+ C} 在第二遍中它将成为{reverse(R)+ A} 在第三遍中,它得到反向(R)的值为R
这将成为R + A + C = RAC作为最终答案。