public class TestSequenceAll {
public static void main(String args[]){
String arr[] = {"asdasd","dddd"};
TestSequenceAll t = new TestSequenceAll();
String str = "";
for(int i = 1;i<=arr.length;i++){
str = t.getSequence(arr, 0, i);
}
System.out.println(str);
}
List<Object> list = new ArrayList<Object>();
public String getSequence(String[] arr, int begin, int num) {
String wordstr = "";
if (num == 0) {
String[] str = list.toArray(new String[list.size()]);
for(int i = 0;i<str.length;i++){
wordstr +=str[i]+"|";
}
// System.out.print(wordstr);
return wordstr;
} else {
for (int i = begin; i < arr.length; i++) {
list.add(arr[i]);
swap(arr, begin, i);
getSequence(arr, begin + 1, num - 1);
swap(arr, begin, i);
list.remove(arr[i]);
}
return wordstr;
}
}
public static void swap(String[] arr, int from, int to) {
if (from == to) {
return;
}
String tmp = arr[from];
arr[from] = arr[to];
arr[to] = tmp;
}
}
为什么得不到输不出我要的str的值呢?我要怎么写从可以得到?
public static void main(String args[]){
String arr[] = {"asdasd","dddd"};
TestSequenceAll t = new TestSequenceAll();
String str = "";
for(int i = 1;i<=arr.length;i++){
str = t.getSequence(arr, 0, i);
}
System.out.println(str);
}
List<Object> list = new ArrayList<Object>();
public String getSequence(String[] arr, int begin, int num) {
String wordstr = "";
if (num == 0) {
String[] str = list.toArray(new String[list.size()]);
for(int i = 0;i<str.length;i++){
wordstr +=str[i]+"|";
}
// System.out.print(wordstr);
return wordstr;
} else {
for (int i = begin; i < arr.length; i++) {
list.add(arr[i]);
swap(arr, begin, i);
getSequence(arr, begin + 1, num - 1);
swap(arr, begin, i);
list.remove(arr[i]);
}
return wordstr;
}
}
public static void swap(String[] arr, int from, int to) {
if (from == to) {
return;
}
String tmp = arr[from];
arr[from] = arr[to];
arr[to] = tmp;
}
}
为什么得不到输不出我要的str的值呢?我要怎么写从可以得到?
i 总是大于 0 ,而你在 getSequence(...) 中并没有在 != 0(else) 中
wordstr 字符串作任何处理,而是直接返回 "". main方法中肯定是"" ,你打印到控制台上肯定什么都没。。明白、
好好看的该是你,else里面有递归
String arr[] = {"a","b","c"};
TestSequenceAll t = new TestSequenceAll();
String str = "";
for(int i = 0;i<=arr.length;i++){
str = t.getSequence(arr, 0, i);
}
System.out.println(str);
}
List<Object> list = new ArrayList<Object>();
String wordstr = "";//你需要递归不能每次在方法中声明这个变量
public String getSequence(String[] arr, int begin, int num) {
if (num == 0) {
String[] str = list.toArray(new String[list.size()]);
for(int i = 0;i<str.length;i++){
//wordstr +=str[i]+"|";
wordstr +=str[i];
}
wordstr +="|";//在这里隔开
// System.out.print(wordstr);
return wordstr;
} else {
for (int i = begin; i < arr.length; i++) {
list.add(arr[i]);
swap(arr, begin, i);
getSequence(arr, begin + 1, num - 1);
swap(arr, begin, i);
list.remove(arr[i]);
}
return wordstr;
}
}
public static void swap(String[] arr, int from, int to) {
if (from == to) {
return;
}
String tmp = arr[from];
arr[from] = arr[to];
arr[to] = tmp;
}
}
其实你实现了,就是两个小地方有点毛病