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

如何在递归中获取上一次迭代的数值?

问题分析与解决方案

你的代码核心问题是x_old的更新时机错误:你在递归调用完成后才给x_old赋值,这时候这个赋值根本无法传递到下一层递归——因为递归调用已经先执行了,下一层拿到的还是未更新的旧值。

正确实现思路

要记录上一次、当前、下一次迭代的数值,关键是在调用递归前,把当前的x值作为下一层的「上一次数值」(也就是x_old参数)传递进去,同时把计算后的新x作为下一层的「当前数值」。另外必须添加递归终止条件,否则会无限递归导致栈溢出。

修正后的代码示例

x = 1
# 初始old值可根据需求设置,比如第一次无历史值时设为None
x_old = None

def rec(current_x, old_x):
    # 打印上一次、当前迭代值
    print('old: ', old_x)
    print('current: ', current_x)
    
    # 执行你的复杂函数计算新值(这里用示例函数代替)
    new_x = current_x ** 2 + current_x - 3  # 替换成你的实际复杂逻辑
    
    # 打印下一次迭代的数值
    print('new: ', new_x, '\n')
    
    # 递归终止条件(必须加!比如当新值超出某个范围时停止)
    if abs(new_x) > 1000:
        return
    
    # 递归调用:把新值作为下一层的current,当前值作为下一层的old
    rec(new_x, current_x)

# 启动递归
rec(x, x_old)

关键说明

  • 下一层递归的old_x参数,直接传入当前层的current_x(也就是当前迭代的数值,即下一层的「上一次值」)
  • 下一层递归的current_x参数,传入当前层计算出的new_x(即下一次迭代的当前值)
  • 终止条件必须根据你的实际需求设置,避免无限递归

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:22:40