📌  相关文章
📜  国际空间研究组织 | ISRO CS 2017 |问题 7(1)

📅  最后修改于: 2023-12-03 15:07:34.814000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2017 |问题 7

题目描述

给定一个数字n,编写一个程序以输出n的所有组合数。

注意:组合数计算公式:C(n,r) = n!/(r!(n-r)!), 其中r是从n个元素中选择r个不同元素的组合数, n!表示n的阶乘,即n! = 1 * 2 * 3 ... n

输入

整数n (1<=n<=20)

输出

n的所有组合数,每行一个。

示例

输入:

5

输出:

1
5
10
10
5
1
解题思路

我们可以使用递归函数 combination() 来计算组合数。由于组合数是对称的,即C(n,r)=C(n,n-r),我们可以只需要计算前一半即可。具体实现见代码。

代码实现
def combination(n, r):
    # 特判
    if r == 0 or r == n:
        return 1
    # 递归计算组合数
    return combination(n-1, r-1) + combination(n-1, r)


n = int(input())
for r in range(n//2+1):
    # 输出前半部分组合数
    print(combination(n, r))
# 输出后半部分组合数(对称性)
for r in range(n//2):
    print(combination(n, n-r-1))