关于全排列递归问题

今天在看一个朋友做笔试,其中有一道题,假设有abcd字母,求其全排列有多少种。

一看到这个我俩第一反应:我们做过,老师教过!然并卵,虽然模糊的记得一点,但也不知所措,一脸懵逼。

于是我开始看了一下百度的答案,嗯,还行,但是代码为什么那么实现,我觉得就算我们知道了原理也很难实现出来。

详情请看:http://blog.csdn.net/summerxiachen/article/details/60579623


经过一番思考,我觉得我们解决的不是这道题的编码,而是对这类题的统一解决方法。

首先我们必须知道什么是递归,百度一下,全是一脸懵逼,但是经过这道题的思考,我得出递归的定义:在一定条件下不断重复着一件重复的事情。

所以我们首先要确定那件重复的事情是什么,以及那个一定条件是什么。

这题很明显,重复的事情就排序(如果你没搞清楚如何排序,那就先搞清楚,弄明白重复的部分,不然怎么弄都不会懂),而一定条件就是指字符序号。

这道题的基本思路是,在字符最大编号的范围内,用遍历的方式把不同的字母当作开头,排完该字母的所有排序后,再更换头字母。然后不断的重复下去。

这就就迎刃而解,具体题目的操作在上面的链接有。

你可能感兴趣的:(关于全排列递归问题)