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

递归实现1到N累加并逐行打印每步结果技术求助

递归实现逐行打印累加过程的解决方案

我来帮你理清这个递归实现的思路!核心是让递归函数一步步处理从1到N的每个数,同时记录当前的累加和与表达式字符串,每处理一个数就打印对应的行,完全不用循环。

完整代码实现

#include <iostream>
#include <string>
using namespace std;

// 递归核心函数:处理当前row,打印该行并返回累加和
int sumToN(int n, int row, int current_sum, string expr) {
    // 更新累加和
    current_sum += row;
    // 构建当前行的表达式字符串
    string current_expr = expr.empty() ? to_string(row) : expr + " + " + to_string(row);
    // 打印当前累加步骤
    cout << current_expr << " = " << current_sum << endl;
    
    // 终止条件:当处理到目标数n时,返回最终总和
    if (row == n) {
        return current_sum;
    }
    // 递归处理下一个数
    return sumToN(n, row + 1, current_sum, current_expr);
}

// 对外的简洁接口,处理初始调用和输入合法性检查
int sumToN(int n) {
    if (n < 1) {
        cout << "请输入正整数哦!" << endl;
        return 0;
    }
    // 初始调用:从row=1开始,累加和初始为0,表达式为空
    return sumToN(n, 1, 0, "");
}

int main() {
    int input;
    cout << "Sum to: ";
    cin >> input;
    int total = sumToN(input);
    // 可选:打印最终总和(如果不需要可以去掉)
    cout << "最终累加结果:" << total << endl;
    return 0;
}

代码思路拆解

  1. 递归递进逻辑:
    我们从row=1开始,每次递归让row+1,直到row等于目标数n时停止。每一步都基于上一次的累加和与表达式,构建当前行的内容并打印。

  2. 关键参数说明:

    • n:目标累加数,全程保持不变;
    • row:当前正在处理的数,从1逐步递增到n;
    • current_sum:记录到当前row为止的累加总和,每次递归都会更新;
    • expr:记录到当前row为止的累加表达式(比如"1 + 2"),用来快速构建输出行。
  3. 终止条件:
    当row == n时,说明已经处理完所有数,返回最终的累加和,递归结束。

测试示例

当输入3时,程序输出:

1 = 1
1 + 2 = 3
1 + 2 + 3 = 6
最终累加结果:6

完全符合你要求的逐行打印累加过程的需求,而且全程没有使用任何循环,纯递归实现。

内容的提问来源于stack exchange,提问作者Ricardo.B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:11:00