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

函数内定义的lambda调用自身是否属于递归?以Tkinter图片查看器代码为例

关于这段代码是否属于递归的判定

结论

你贴的这段代码里的写法不属于递归范畴。

判定依据

首先明确递归的核心判定标准:

  • 递归要求函数在自身的本次执行过程中,直接或间接调用自身,且调用会嵌套进入当前函数的调用栈,形成连续的调用链路。

再对应分析这段代码的执行逻辑:

  • 代码里写的lambda: forward(image_number+1)并没有在forward函数运行时立刻执行forward调用,只是把带参数的forward调用封装成了回调函数,赋值给了按钮的command属性存储起来。
  • 只有当用户手动点击前进按钮时,这个封装的lambda才会触发执行,此时上一次forward函数的执行已经完全结束,调用栈早已清空,两次forward调用是完全独立的事件触发执行,不存在调用嵌套关系,因此不满足递归的要求。

反例参考

如果是下面这种写法,才属于递归:

def forward(image_number):
    # 省略其他代码
    forward(image_number+1) # 直接在函数执行过程中调用自身,会连续嵌套调用直到栈溢出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:45:03