python递归调用函数时遇到的坑

感谢

https://www.cnblogs.com/my_captain/p/9269141.html

向我解惑,十分感谢!

今天编写一个递归函数的时候遇到了一个问题,有时候调用函数能得到我们想要的结果;但是有时候调用函数的时候却出现bug程序报错,打印调用递归后的数据得到的是[None]。而且在递归函数这边出的错报错信息却是链接到其他函数、其他与你写的递归函数无关的地方。

其实巨佬https://www.cnblogs.com/my_captain/p/9269141.html写的很清楚:

问题:

解决:

"盗用"巨佬的图,全为了给误入歧途的小伙伴们解惑!

 

我的错误代码:

def get_randtuple(self, node_list, edge_list):
    a, b = 0, 0
    temp_list = []
    temp_set = set()
    rand_tuple = tuple(random.choices(node_list, k=2))
    a = rand_tuple[0]
    b = rand_tuple[1]
    if a == b:
        # 递归1
        self.get_randtuple(node_list, edge_list)
    else:
        # temp_list = edge_list 别使用浅复制
        temp_list = copy.deepcopy(edge_list)
        len_temp_list = len(edge_list)
        temp_list.append(rand_tuple)
        temp_set = sorted(set(temp_list))
        if len(edge_list) == len(temp_set):
            # 递归1
            self.get_randtuple(node_list, edge_list)
        else:
            return rand_tuple

报的错:

return的是None!

修改后的代码:

def get_randtuple(self, node_list, edge_list):
    a, b = 0, 0
    temp_list = []
    temp_set = set()
    rand_tuple = tuple(random.choices(node_list, k=2))
    a = rand_tuple[0]
    b = rand_tuple[1]
    if a == b:
        # 递归1
        return (self.get_randtuple(node_list, edge_list))
    else:
        # temp_list = edge_list 别使用浅复制
        temp_list = copy.deepcopy(edge_list)
        len_temp_list = len(edge_list)
        temp_list.append(rand_tuple)
        temp_set = sorted(set(temp_list))
        if len(edge_list) == len(temp_set):
            # 递归1
            return (self.get_randtuple(node_list, edge_list))
        else:
            return rand_tuple

运行结果:

还是那句话,遇到问题学会自己解决而不是怨天尤人。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值