首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

每日一道c语言编程题,第41题,打印菱形,递归法

输入上半部分的行数来打印出一个菱形,例如:

#include

void printLine(int n, int i)

{

  int j;

  // 打印当前行的空格

  for (j = 1; j

      printf(" ");

  // 打印当前行的星号

  for (j = 1; j

      printf("*");

  printf("\n");

  if (i < n)

      printLine(n, i+1);

  // 打印下半部分

  if (i > 1)

  {

      // 打印当前行的空格

      for (j = 1; j

          printf(" ");

      // 打印当前行的星号

      for (j = 1; j

          printf("*");

      printf("\n");

  }

}

int main()

{

  int n;

  printf("请输入菱形的长度:");

  scanf("%d", &n);

  printLine(n, 1);

  return 0;

}

主要思路是:

用户输入菱形的长度 n。

调用递归函数 printLine,传入 n 和 1,打印第一行。

在递归函数中,先打印当前行的空格和星号,然后判断当前行是否为最后一行。

如果不是最后一行,递归调用函数,传入 n 和 i+1,打印下一行。

如果是最后一行,直接返回。

在递归函数的结尾,如果当前行 i 大于 1,说明需要打印菱形的下半部分。这里使用了一个类似的循环来打印下半部分的每一行。

需要注意的是,在打印下半部分时,空格数和星号数与上半部分略有不同,详见程序中的注释。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230321A01PH400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券