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

如何编写计算递推式3(2+1)+4(3+2+1)+…+(n+1)(n+…+2+1)的递归函数?

递归实现该表达式的思路与代码

嘿,别纠结,这个问题拆解开来其实很清晰!咱们一步步理清楚表达式的结构,再找到递归的切入点~

首先,先对齐你说的基准情况:你提到n=1时对应表达式第一项3(2+1),那咱们先明确整个表达式的规律:

  • n=1时,总和 = 3×(1+2) = 9
  • n=2时,总和 = 9 + 4×(1+2+3) = 33
  • n=3时,总和 = 33 + 5×(1+2+3+4) = 83
  • ...
  • 第k项的结构:乘数是k+2,后面跟着的是从1加到k+1的累加和

这样递归的核心关系就出来了:n项的总和 = n-1项的总和 + 第n项的值——不管项是递增还是递减,只要能把大问题拆成「小问题结果+当前项」,递归就能跑通。

代码实现(以Python为例)

我们可以把逻辑拆成两部分:递归计算累加和,再递归计算表达式总和,这样结构更清晰。

1. 递归计算从1到k的累加和

def sum_1_to_k(k):
    # 基准情况:1的累加和就是1
    if k == 1:
        return 1
    # 递归关系:k的累加和 = k-1的累加和 + k
    return sum_1_to_k(k-1) + k

2. 递归计算表达式的总和

def calculate_expression(n):
    # 基准情况:n=1时直接返回第一项的结果
    if n == 1:
        return 3 * sum_1_to_k(2)
    # 计算当前项:乘数是n+2,累加和是1到n+1的和
    current_multiplier = n + 2
    current_sum = sum_1_to_k(n + 1)
    # 递归:总和 = 前n-1项的结果 + 当前项的值
    return calculate_expression(n-1) + current_multiplier * current_sum

测试验证

  • calculate_expression(1) 返回 9,符合基准情况
  • calculate_expression(2) 返回 33,计算正确
  • calculate_expression(3) 返回 83,计算正确

额外小提示

如果不想写两个递归函数,也可以把累加和的逻辑直接用数学公式k*(k+1)//2替代(效率更高,避免递归栈溢出的问题),但如果是练习递归写法,分开写的逻辑会更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:04:42