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

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

编码文章call10242025-07-02 18:37:185A+A-

#头条创作挑战赛#

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



#include <stdio.h>

void printLine(int n, int i)

{

int j;

// 打印当前行的空格

for (j = 1; j <= n-i; j++)

printf(" ");

// 打印当前行的星号

for (j = 1; j <= 2*i-1; j++)

printf("*");

printf("\n");

if (i < n)

printLine(n, i+1);

// 打印下半部分

if (i > 1)

{

// 打印当前行的空格

for (j = 1; j <= n-i+1; j++)

printf(" ");

// 打印当前行的星号

for (j = 1; j <= 2*i-3; j++)

printf("*");

printf("\n");

}

}

int main()

{

int n;

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

scanf("%d", &n);

printLine(n, 1);

return 0;

}

主要思路是:

  1. 用户输入菱形的长度 n。
  2. 调用递归函数 printLine,传入 n 和 1,打印第一行。
  3. 在递归函数中,先打印当前行的空格和星号,然后判断当前行是否为最后一行。
  4. 如果不是最后一行,递归调用函数,传入 n 和 i+1,打印下一行。
  5. 如果是最后一行,直接返回。
  6. 在递归函数的结尾,如果当前行 i 大于 1,说明需要打印菱形的下半部分。这里使用了一个类似的循环来打印下半部分的每一行。

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

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4