每日一道c语言编程题,第41题,打印菱形,递归法
输入上半部分的行数来打印出一个菱形,例如:
#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;
}
主要思路是:
- 用户输入菱形的长度 n。
- 调用递归函数 printLine,传入 n 和 1,打印第一行。
- 在递归函数中,先打印当前行的空格和星号,然后判断当前行是否为最后一行。
- 如果不是最后一行,递归调用函数,传入 n 和 i+1,打印下一行。
- 如果是最后一行,直接返回。
- 在递归函数的结尾,如果当前行 i 大于 1,说明需要打印菱形的下半部分。这里使用了一个类似的循环来打印下半部分的每一行。
需要注意的是,在打印下半部分时,空格数和星号数与上半部分略有不同,详见程序中的注释。
相关文章
- Linux服务器硬件信息查询与日常运维命令总结
- Linux服务器带宽跑不满?用ethtool调优网卡参数,性能提升30%
- 如何在 Rocky Linux 中查看网卡流量?跟着小编学习iftop安装和使用
- Linux查看网卡速率_linux查看网卡当前速率
- 五一我要看七天小说!免费开源的轻量化书库talebook搭建流程。
- 我是如何用这3个小工具,助力小姐姐提升100%开发效率的
- html5和css3的常用参考网_基于html5和css3的网页制作
- 超详细的网络抓包神器 tcpdump 使用指南
- Vue 技术栈(全家桶)_vue全栈项目教程
- 学习ES6- 入门Vue(大量源代码及笔记,带你起飞)