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

如何用递归函数将整数拆分为单个数字(如731→[7,3,1])

用递归实现整数拆分为单个数字

实现1:与你的循环代码输出一致(逆序打印)

递归思路:先打印当前数字的最后一位,再递归处理去掉最后一位后的剩余数字,直到数字变为0时终止递归。

#include <iostream>
using namespace std;

void argam(int n);

int main()
{
    int a;
    cout << "Please enter num : ";
    cin >> a;
    argam(a);
}

void argam(int n)
{
    if (n == 0) {
        return; // 递归终止条件:数字为0时停止
    }
    cout << n % 10 << "\n"; // 先输出当前数字的最后一位
    argam(n / 10); // 递归处理去掉最后一位后的数字
}

测试输入345时,输出与你提供的循环代码完全一致:

5
4
3

实现2:正序拆分(如731→7、3、1)

如果需要按照数字原本的顺序输出(和你开头示例的731→[7,3,1]逻辑一致),只需调整递归与打印的顺序:先递归处理高位部分,再打印当前位。

#include <iostream>
using namespace std;

void argam(int n);

int main()
{
    int a;
    cout << "Please enter num : ";
    cin >> a;
    // 单独处理输入为0的特殊情况
    if (a == 0) {
        cout << 0 << "\n";
        return 0;
    }
    argam(a);
}

void argam(int n)
{
    if (n == 0) {
        return; // 递归终止条件
    }
    argam(n / 10); // 先递归处理高位数字
    cout << n % 10 << "\n"; // 再输出当前位
}

测试输入731时,输出:

7
3
1

递归逻辑说明

递归的核心是将大问题拆解为更小的子问题:

  • 对于数字n,拆分任务可拆分为「拆分n/10」和「处理n%10」两个子任务
  • 调整两个子任务的执行顺序,就能控制输出的正/逆序
  • 当n == 0时,没有更多数字需要处理,递归终止

内容的提问来源于stack exchange,提问作者helpme.stock

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 17:55:28