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

如何在C语言中无循环仅用递归实现星号金字塔图案?

纯递归实现星号金字塔(无任何循环)

我们可以通过新增一个辅助递归函数替代原代码中的for循环,负责逐次打印单个星号,从而实现完全无循环的递归方案。

完整实现代码

#include <stdio.h>

void printPattern(int n);
void printStars(int count);

int main()
{
    int n = 4;  
    printPattern(n);
    return 0;
}

void printPattern(int n)
{
    if (n == 1)
    {
        printStars(1);
        printf("\n");
        return;
    }

    // 先递归打印上层金字塔
    printPattern(n - 1);

    // 递归打印当前行的所有星号
    printStars(2 * n - 1);
    printf("\n");
}

// 辅助递归函数:打印count个"* "
void printStars(int count)
{
    if (count == 0)
        return;
    
    printf("* ");
    // 递归处理剩余的星号
    printStars(count - 1);
}

代码逻辑说明

  • printPattern 负责金字塔的层级递归:从第1层开始向上构建,先递归完成n-1层的打印,再处理当前第n层的内容。
  • printStars 是核心辅助函数,接收需要打印的星号数量作为参数,每次打印一个"* "后,递归调用自身处理剩余的星号,直到计数减为0时终止。

输出验证

运行代码后,输出与原代码完全一致:

* 
* * * 
* * * * * 
* * * * * * * 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:14:55