You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何初始化存储全局变量的类以在递归调用中更新及返回结果?

问题1:如何初始化storage类的三个变量为0

你可以直接给类的构造方法设置默认参数,或者实例化的时候主动传入0值即可,参考修改后的类定义:

class Storage:
    # 按照Python命名规范,类名首字母大写
    def __init__(self, largest_triple=None, max_perimeter=0, triple_count=0):
        self.largest_triple = largest_triple # 三元组初始可以设为空,后续匹配到合法值再更新
        self.max_perimeter = max_perimeter
        self.triple_count = triple_count

实例化的时候直接调用storage = Storage()就会自动把数值类变量初始化为0,不用额外传参。

如果你不想修改类的原有定义,也可以在实例化的时候手动传0:

storage = Storage(largestTriple=[0,0,0], maxPerimeter=0, numberOfTriples=0)

问题2:递归过程用全局变量存中间值是否是通用合理方案

这种方案本身是可行的,尤其适合递归过程需要做累计计数、更新最值这类场景,比每次递归返回多个值再逐层合并的写法要简洁很多。
但不推荐用真正的全局变量,更推荐两种更安全的实现方式:

  • 把存储中间值的实例作为参数传递给递归函数,作用域完全控制在调用链路内,不会出现多次调用函数导致的变量污染问题
  • 把递归函数写成find_max_triple的嵌套函数,直接修改外层函数定义的存储变量,逻辑更内聚

你现有代码里的checkPythag直接用self访问变量是无法生效的,需要把存储实例作为参数传入递归函数,同时要补充c >= c_max的终止条件避免无限递归。


内容的提问来源于stack exchange,提问作者Patrick_Chong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:06:10