如何在Python中使用递归方法计算排列和组合?
在Python中,可以使用递归方法计算排列和组合。下面,分别介绍如何计算排列和组合的递归方法,并附上相应的代码演示。
- 计算排列的递归方法
排列是从一组不同的元素中取出若干个元素进行排序,有n个不同的元素,取m个元素进行排序时,可以得到的所有排列数为:P(n,m) = n!/(n-m)!
可以使用递归方法计算排列数,代码演示如下:
def permutation(n, m): if m == 0: return 1 else: return n * permutation(n-1, m-1)
其中,n表示一组不同的元素中的元素个数,m表示取出的元素的个数。如果m等于0,则返回1(因为0的阶乘为1),否则递归计算n * P(n-1,m-1),即取出一个元素后,从剩余元素中继续取出m-1个元素进行排序。
下面是一个计算排列数的例子:
n = 5 m = 3 print("P(%d,%d) = %d" % (n, m, permutation(n, m)))
输出结果为:
P(5,3) = 60
说明在5个不同的元素中取出3个元素进行排序,可以得到60种排列方式。
- 计算组合的递归方法
组合是从一组不同的元素中取出若干个元素,不进行排序,有n个不同的元素,取m个元素时,可以得到的所有组合数为:C(n,m) = n!/[(n-m)!*m!]
可以使用递归方法计算组合数,代码演示如下:
def combination(n, m): if m == 0 or n == m: return 1 else: return combination(n-1, m-1) + combination(n-1, m)
其中,n表示一组不同的元素中的元素个数,m表示取出的元素的个数。如果m等于0或n等于m,则返回1(因为组合数为1),否则递归计算C(n-1,m-1)+C(n-1,m),即从剩余元素中取出m-1个元素进行组合,或者从剩余元素中取出m个元素进行组合,两者之和即为所有组合数。
下面是一个计算组合数的例子:
n = 6 m = 3 print("C(%d,%d) = %d" % (n, m, combination(n, m)))
输出结果为:
C(6,3) = 20
说明在6个不同的元素中取出3个元素进行组合,可以得到20种组合方式。
相关文章