鱼C论坛

 找回密码
 立即注册
查看: 672|回复: 12

递归中的存储问题

[复制链接]
发表于 2018-12-10 21:28:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
组合.png
我想将所有的select_data以列表的形式存储到all_data中,我该怎么做?求助各位大神!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-12-10 21:31:59 | 显示全部楼层
倒数第二行combine里多了个参数,请大家无视
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-10 22:28:13 | 显示全部楼层
你定义的combine函数设定的4个参数,而你调用的时候传递的是5个参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-10 22:57:54 | 显示全部楼层
fan1993423 发表于 2018-12-10 22:28
你定义的combine函数设定的4个参数,而你调用的时候传递的是5个参数

忘了删除了,请无视这个细节
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-10 22:59:22 | 显示全部楼层
baibaitjy 发表于 2018-12-10 22:57
忘了删除了,请无视这个细节

你最终是想实现哪种列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-10 23:28:15 | 显示全部楼层
fan1993423 发表于 2018-12-10 22:59
你最终是想实现哪种列表

就是在all_data里面放入所有6个数字的组合情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-10 23:31:22 | 显示全部楼层
data_tmp=[1,2,3,4,5,6,7,8,9,10]
all_data=[]
def combine(data,step,select_data,target_num):
    global all_data
    if len(select_data)==target_num:
        print(select_data)
        #all_data.append(select_data)
        #print(all_data)
        return
    if step >= len(data):
        return
    select_data.append(data[step])
    combine(data,step+1,select_data,target_num)
    select_data.pop()
    combine(data,step+1,select_data,target_num)
if __name__ == '__main__':
    data=data_tmp
    combine(data,0,[],6)
    #print(all_data)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-10 23:34:11 | 显示全部楼层
本帖最后由 baibaitjy 于 2018-12-10 23:36 编辑

结果.png
想把这些结果存进all_data里
@fan1993423
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-11 00:55:54 | 显示全部楼层
data_tmp = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
all_data = []


def combine(data, step, select_data, target_num):
    if len(select_data) == target_num:
        select_data = str(select_data)
        all_data.append(select_data)
        #print(select_data)
        # all_data.append(select_data)
        # print(all_data)
        return
    if step >= len(data):
        return
    select_data.append(data[step])
    combine(data, step + 1, select_data, target_num)
    select_data.pop()
    combine(data, step + 1, select_data, target_num)


if __name__ == '__main__':
    data = data_tmp
    combine(data, 0, [], 6)
    print(all_data)

我不是很清楚,为什么加到列表要转文本,不然加不不进去,转了之后可以添加进all_data列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-11 13:36:17 | 显示全部楼层
Stubborn 发表于 2018-12-11 00:55
我不是很清楚,为什么加到列表要转文本,不然加不不进去,转了之后可以添加进all_data列表

是哦,好奇怪啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-11 19:28:42 | 显示全部楼层
自顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-12-12 14:33:04 | 显示全部楼层
自顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-14 09:53:51 | 显示全部楼层
把 all_data.append(select_data) 改成:all_data.append(select_data[:])
深浅拷贝的问题。这里要用深拷贝~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 08:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表