Java 方法递归与置换
我试图理解下面写的代码。我可以跟进到某一点。我想我理解第一个结果是如何实现的,但不确定其他结果是如何实现的。下面是代码和我的解释 代码:Java 方法递归与置换,java,recursion,Java,Recursion,我试图理解下面写的代码。我可以跟进到某一点。我想我理解第一个结果是如何实现的,但不确定其他结果是如何实现的。下面是代码和我的解释 代码: publicstaticvoidmain(字符串[]args) { String str=“abc”; 置换(str,“”); } 专用静态无效置换(字符串str、字符串current){ if(str.equals(“”) { System.out.printf(“结果:%s”,当前); System.out.println(); } 其他的 { 对于(in
publicstaticvoidmain(字符串[]args)
{
String str=“abc”;
置换(str,“”);
}
专用静态无效置换(字符串str、字符串current){
if(str.equals(“”)
{
System.out.printf(“结果:%s”,当前);
System.out.println();
}
其他的
{
对于(int i=0;i
我对字符串的解释,如abc
1.对于i=0;i<字符串长度;增量i
2.at索引i转换为字符(a)
3.使用子字符串(剩余字符-bc)和(当前字符a)的参数运行置换方法
4.现在使用字符串bc
5.对于i=0;i<字符串长度;增量i
6.at索引i转换为字符(b)
7.使用子字符串(剩余字符-c)和(当前字符ab)的参数运行置换方法
8.对于i=0;i<字符串长度;增量i
9.at索引i转换为字符(b)
10.使用子字符串(剩余字符-)和(当前字符abc)的参数运行置换方法
11 as string=“”打印当前字符abc
其他排列是如何实现的?任何指导都将不胜感激。我建议您使用调试器,一次一行地遍历代码,并观察变量值的变化。如果您发现一些您不理解的更具体的内容,请带着更多的问题回来!搜索不会有任何伤害。不,真的!它会是通过递归进行的置换。这里有更好的解释:
public static void main(String [] args)
{
String str ="abc";
permuatation(str,"");
}
private static void permuatation(String str, String current) {
if(str.equals(""))
{
System.out.printf("Result: %s",current);
System.out.println();
}
else
{
for (int i = 0; i < str.length(); i++)
{
char c= str.charAt(i);
permuatation(str.substring(0, i)+ str.substring(i+1), current + c);
}
}