递归初给我的印象是:哦,实现的这么巧妙,代码量如此的少,嗯,看懂了。然后信心满满。下一次碰到个问题,心想:嗯,实现的优雅点,用递归,嗯,这样写,咦,到底循环到哪一个子递归了,完,全晕。
我不否认有的人很适合理解递归的思想,但有的人像我一样可能就理解起来比较费劲,这并不否认也无需怀疑自己,因为据我所知,好多开发能力强的人不见得就能写的一手好递归,废话不多说,看一下用递归写的两个排列和组合的栗子:
排列:即n个数进行全排列,三个数abc,全排列有abc\acb\bac\bca\cab\cba
public static void pailie(String str, String result, int length){
if(result.length()==length){
System.out.println(result);
} else{
for(int i =0;i<str.length();i++){
if(result.indexOf(str.charAt(i))<0){
pailie(str, result+str.charAt(i), length);
}
}
}
}
是不是实现的很简洁,但如果能写出来可能就不那么乐观了,我当初也是卡了很久