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

C++递归生成n位严格递增数字的代码问题及解决方案

生成n位严格递增数字代码问题排查

需求说明

需要生成满足严格递增规则的n位数字。

示例输出

8位严格递增数字的输出结果如下:

12345678 12345679 12345689 12345789 12346789 12356789 12456789 13456789 23456789

遇到的问题

通过递归方法实现需求时,未得到预期输出:将n设置为3时,最终输出的是6位数字,且不满足严格递增的要求。

实际运行输出截图

运行输出图片

原有代码

#include <iostream>
#include <string>
#include <vector>
#include <string_view>
#include <cmath>

using namespace std;

class Solution {
public:
    void gen_num(int prev, string ans, int n, int ind){
        if (n==ind){
            cout<<ans<<" ";
            return;
        }
        for (int i=1+prev; i<=9; i++){
            gen_num(i, ans+to_string(i+'0'), n, ind+1);
        }
    }
};

int main()
{
    Solution sol;
    int n=3;
    sol.gen_num(0,"", n, 0);
}

问题排查结果

已定位到错误点:代码中ans+to_string(i+'0')的写法错误,正确写法应为ans+to_string(i)。

错误原因说明

i + '0'的作用是将数字i转换为对应的ASCII字符值,例如当i=1时,1 + '0'的计算结果是49,也就是ASCII码中字符'1'对应的编码数值。此时调用to_string()方法,会将数字49直接转换为字符串"49",相当于每拼接一位数字就多写入了2个字符,所以当n=3时,最终生成的字符串长度是6位,自然不符合输出要求。
直接使用to_string(i)会直接将数字i转换为对应的字符串,例如i=1时得到的是"1",符合拼接逻辑,修改后即可正常输出符合要求的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 13:30:03