jyuan_D 2021-11-05 21:09 采纳率: 100%
浏览 15
已结题

在用递归做可重复抽样时,n为0时,b为什么用[[]]的形式就能正常运行,用[]就只能出现空列表?

def f(a,n):
    if n < 0:
        print('Something wrong.')
        return False
    if n == 0:
        b = [[]]
        return b
    m = len(a)
    y = []
    for i in range(m):
        x = [a[i]]
        for j in f(a,n-1):
            y.append(x+j)
    return y

a = [1,2,3,4]
print(f(a,2))

这样就是正常的

def f(a,n):
    if n < 0:
        print('Something wrong.')
        return False
    if n == 0:
        b = []
        return b
    m = len(a)
    y = []
    for i in range(m):
        x = [a[i]]
        for j in f(a,n-1):
            y.append(x+j)
    return y

a = [1,2,3,4]
print(f(a,2))

这样返回值就只有 []

  • 写回答

1条回答 默认 最新

  • 关注

    因为如果 b = [] 的话、递归回到上一层时,for j in f(a,n-1): 循环空列表[] 是循环0次,这样 y.append(x+j) 就一次也不会执行。最后返回return y 也是空列表[] 。
    所以 b 不能是空列表[] 要让 y.append(x+j) 至少执行一次 。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月13日
  • 已采纳回答 11月5日
  • 创建了问题 11月5日

悬赏问题

  • ¥100 数字取证课程 关于FAT文件系统的操作
  • ¥15 如何使用js实现打印时每页设置统一的标题
  • ¥15 安装TIA PortalV15.1报错
  • ¥15 能把水桶搬到饮水机的机械设计
  • ¥15 Android Studio中如何把H5逻辑放在Assets 文件夹中以实现将h5代码打包为apk
  • ¥15 使用小程序wx.createWebAudioContext()开发节拍器
  • ¥15 关于#爬虫#的问题:请问HMDB代谢物爬虫的那个工具可以提供一下吗
  • ¥15 vue3+electron打包获取本地视频属性,文件夹里面有ffprobe.exe 文件还会报错这是什么原因呢?
  • ¥20 用51单片机控制急停。
  • ¥15 孟德尔随机化结果不一致