python关于递归求组合与组合数-通过阶乘, fibonacci加深对递归的理解

本文探讨如何使用Python递归方法求解组合与组合数,通过阶乘和Fibonacci数列来深入理解递归概念。文章提供了一个使用递归实现的comb(n, k)函数,用于生成指定元素集合的组合列表,并强调了递归在解决这类问题中的优势和挑战。同时,还包含了两个递归练习:合并列表和计算阶乘。" 108617100,8765213,理解二叉树的高度与深度,"['数据结构', '算法', '二叉树', 'C++', 'python']
摘要由CSDN通过智能技术生成

python关于递归求组合与组合数:

  1. 首先需要找到递归的突破口。
  2. 要求如下:
    Exercise 3: Enumerating Combinations
    You need to write a function, comb(n, k), that returns a list consisting of all the combinations of 𝑘 elements out of a set {1,2,…,𝑛} . Your implementation should be using recursions instead of for loop (you may use list comprehension though).

如果初学python建议用库函数解决, 那还学什么递归算法。用iteration库函数解决的可以不看下面内容。

如果求组合数, 可以用以下公式:

def comb(n, k):    # the number of combinations
    if k > n:
        return 0
    elif k == 1:
        return n
    elif n == 1:
        return k     # k is 1 or 0
    else:
        return comb(n - 1, k - 1) + comb(n - 1, k)
comb(6, 3)
20

如果理解以上递归, 可以用以上的递归列出所有的组合:
把以上的函数转化为列表:

def comb(n, k):
    if k == n:
        return [[i for i in range(1, n 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值