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

如何移除n-bonacci递归函数中的循环?改用合法方式实现求和

替换n-bonacci递归函数中的for循环实现

我编写了一个用于计算n-bonacci序列第m项的递归函数,但代码被完全禁止使用for和while循环。需要替换以下for循环段:

for i in range(1, n+1): 
    temp += n_bonacci(n,m-i)

改用允许的方式(如sum()等内置函数、列表推导式)实现相同逻辑。

修改后的完整代码

def n_bonacci(n,m):  # n是初始项的数量;m是要计算的第m项
    if m < n-1:
        return 0
    elif m == n-1:
        return 1
    else:
        # 用生成器表达式结合sum()替代循环累加
        return sum(n_bonacci(n, m-i) for i in range(1, n+1))

print("n_bonacci:", n_bonacci(2,10))
print("n_bonacci:", n_bonacci(7,20))

替换说明

原循环的作用是累加m-1到m-n位置的n-bonacci值,用sum()结合生成器表达式可以直接完成这个累加操作——生成器表达式会依次生成i从1到n时n_bonacci(n, m-i)的结果,sum()自动将这些结果求和,完全替代了原循环的逻辑,而且不需要额外的临时变量temp。

你之前尝试的列表推导式[temp += n_bonacci(n,m-i) for i in range(n)]不合适,因为列表推导式是用来生成列表的,不适合执行赋值操作,而生成器表达式更适配这种仅需逐个生成值来求和的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:01:09