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

如何用C++递归实现输入k后输出1 22 333…k重复k次的序列?

递归实现数字重复序列的C++代码

问题需求

输入一个自然数k,输出形如1 22 333 …的序列,其中第k个元素是数字k重复k次(例如输入6时输出1 22 333 4444 55555 666666)。原代码仅能输出1到k的数字,现提供正确的递归实现方案。

错误的尝试代码

#include <iostream>

using namespace std;

int x;

void func(int n) 
{
    if(n>=1){
        func(n-1);
        std::cout<< n << " ";
    }   
}

int main()
{
    cout << "Enter a natural number: ";
    cin >> x;
    func(x);
}

正确的递归实现代码

#include <iostream>

using namespace std;

// 辅助递归函数:打印数字num重复count次
void printNum(int num, int count) {
    if (count > 0) {
        cout << num;
        printNum(num, count - 1);
    }
}

// 主递归函数:生成从1到n的目标序列
void generateSequence(int n) {
    if (n >= 1) {
        generateSequence(n - 1);
        printNum(n, n);
        cout << " ";
    }
}

int main() {
    int k;
    cout << "Enter a natural number: ";
    cin >> k;
    generateSequence(k);
    return 0;
}

代码说明

  1. 辅助递归函数printNum:负责将指定数字num重复打印count次,通过递归逐步减少打印次数,直到次数为0时停止。
  2. 主递归函数generateSequence:保持原有的递归顺序(先处理n-1,再处理当前n),确保序列从1到k依次输出。处理当前n时,调用printNum(n, n)实现数字n重复n次的打印,随后输出空格分隔元素。
  3. 测试输入6时,程序会输出1 22 333 4444 55555 666666 (末尾空格不影响结果展示,若需去除可额外调整逻辑)。

内容的提问来源于stack exchange,提问作者Арсен Мегдальський

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:25:21