![](https://i-blog.csdnimg.cn/blog_migrate/5249c6f20eba65aca1e8bf62186eb72d.png)
分析:
- 对于非数值型递归就得用容器去装啦
- 这里的Set就是几个去重的集合容器
- 生成一点装一点点,所谓迭代就是慢慢改变
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
//Set为去重的集合
System.out.println(ToDo(4));
}
private static Set<String> ToDo(int i) {
Set<String> set = new HashSet<>();
//跳出条件
if(i == 1) {
set.add("()");
return set;
}
//先算出上一阶段
Set<String> set1 = new HashSet<>();
set1 = ToDo(i - 1);
//在进行加括号
for(String set2: set1) {
set.add("()" + set2 );
set.add(set2 + "()");
set.add("(" + set2 + ")");
}
return set;
}
}
运行结果:
[()()()(), (()())(), (()(())), ()()(()), (())()(), (((()))), ()((())), ()(())(), ()(()()), (()()()), ((()())), ((()))(), ((())())]