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

递归+lambda改写高阶函数n=0触发递归溢出问题求解决方案

问题根因

你当前的递归实现仅设置了n == 1这一个终止条件,当传入n=0时,程序会持续执行n-1的递减逻辑,递归深度无限增长,因此会触发RecursionError,调整递归上限无法解决本质问题,因为这是逻辑漏洞导致的无限递归。

修复方案

直接补充n==0的终止分支即可,符合原高阶函数的语义:当n为0时,不对输入参数做任何运算,直接返回原值,对应恒等函数。
修复后的代码:

def fn(f, n):
    return lambda x: x if n == 0 else f if n == 1 else lambda y: fn(f, n-1)(f(y))
验证测试
  • 测试n=0场景:执行print(fn(lambda x: sin(x), 0)(1000)),会直接输出1000,符合预期
  • 测试n=5场景:计算fn(lambda x: sin(x),5)(1),结果依然为0.587181,和原逻辑一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:18:00