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

如何使用递归输出指定星型图形并将两个C#函数合并为一个

C# 菱形打印双函数合并方案

核心思路

原来的两个函数分别负责打印菱形的上半段(含中间行)和下半段,本质都是计算每行的空格数、星号数后输出,再递归触发下一行打印。我们可以通过当前行到中间行的绝对值距离统一计算所有行的空格、星号数量,不需要拆分上下段逻辑,直接合并为单个函数。

注:默认输入n为奇数,和示例取值7的场景匹配

合并后的递归实现(兼容原有递归逻辑)

static void PrintRhombus(int N, int currentLine)
{
    // 计算中间行序号
    int midLine = (N + 1) / 2;
    // 计算当前行到中间行的距离
    int gap = Math.Abs(midLine - currentLine);
    
    // 打印前置空格
    for (int i = 0; i < gap; i++)
    {
        Console.Write(" ");
    }
    // 打印星号
    for (int i = 0; i < N - 2 * gap; i++)
    {
        Console.Write("*");
    }
    Console.WriteLine();
    
    // 没打到最后一行就继续递归
    if (currentLine < N)
    {
        PrintRhombus(N, currentLine + 1);
    }
}

调用示例

输入n=7时,直接调用即可输出完整菱形:

PrintRhombus(7, 1);

可选简化:非递归版本

如果不需要递归,还可以进一步简化为单层循环实现:

static void PrintRhombus(int N)
{
    int mid = (N + 1) / 2;
    for (int i = 1; i <= N; i++)
    {
        int gap = Math.Abs(mid - i);
        Console.WriteLine($"{new string(' ', gap)}{new string('*', N - 2 * gap)}");
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:09:02