递归函数理解的重点在else分支中,comm(n,k)函数表示从1,2,...n个数中任取k个数的所有组合。我们可以一个一个数取,这里面对于每个数来说有2个可能的选择:
(1)当这个数字被选中的时候,那么后面的数字是从余下的n-1个数中取k-1数的组合。这里用下面表示
comm(n - 1, k - 1)
(2)当这个数字没有被选中的时候,那么后面的数字是从余下的n-1个数中取k数的组合。这里用下面表示
comm(n - 1, k)
因此,总的可能是就是将这两种可能相加,为
comm(n - 1, k) + comm(n - 1, k - 1)