今天在看一个朋友做笔试,其中有一道题,假设有abcd字母,求其全排列有多少种。
一看到这个我俩第一反应:我们做过,老师教过!然并卵,虽然模糊的记得一点,但也不知所措,一脸懵逼。
于是我开始看了一下百度的答案,嗯,还行,但是代码为什么那么实现,我觉得就算我们知道了原理也很难实现出来。
详情请看:http://blog.csdn.net/summerxiachen/article/details/60579623
经过一番思考,我觉得我们解决的不是这道题的编码,而是对这类题的统一解决方法。
首先我们必须知道什么是递归,百度一下,全是一脸懵逼,但是经过这道题的思考,我得出递归的定义:在一定条件下不断重复着一件重复的事情。
所以我们首先要确定那件重复的事情是什么,以及那个一定条件是什么。
这题很明显,重复的事情就排序(如果你没搞清楚如何排序,那就先搞清楚,弄明白重复的部分,不然怎么弄都不会懂),而一定条件就是指字符序号。
这道题的基本思路是,在字符最大编号的范围内,用遍历的方式把不同的字母当作开头,排完该字母的所有排序后,再更换头字母。然后不断的重复下去。
这就就迎刃而解,具体题目的操作在上面的链接有。
网友评论