递归实现C语言菱形图案打印
以下是使用递归函数实现的C语言程序用于打印菱形图案。程序通过两个递归函数分别处理菱形的上半部分和下半部分避免了循环结构#include stdio.h // 递归打印空格 void print_spaces(int n) { if (n 0) return; printf( ); print_spaces(n - 1); } // 递归打印星号 void print_stars(int n) { if (n 0) return; printf(*); print_stars(n - 1); } // 递归打印上半部分含中间行 void print_upper(int current, int total) { if (current total) return; print_spaces(total - 1 - current); // 打印前导空格 print_stars(2 * current 1); // 打印星号 printf(\n); print_upper(current 1, total); // 递归处理下一行 } // 递归打印下半部分 void print_lower(int current, int total) { if (current total - 1) return; print_spaces(current 1); // 打印前导空格 print_stars(2 * (total - 1 - current) - 1); // 打印星号 printf(\n); print_lower(current 1, total); // 递归处理下一行 } int main() { int line 0; scanf(%d, line); // 输入行数 print_upper(0, line); // 打印上半部分含中间行 print_lower(0, line); // 打印下半部分 return 0; }程序说明递归函数设计print_spaces(int n)递归打印n个空格print_stars(int n)递归打印n个星号print_upper(int current, int total)递归打印菱形上半部分含中间行print_lower(int current, int total)递归打印菱形下半部分执行流程用户输入行数line如7print_upper(0, line)从第0行开始递归打印空格数 $line-1-i$星号数 $2i1$print_lower(0, line)从第0行开始递归打印空格数 $i1$星号数 $2(line-1-i)-1$示例输出输入7* *** ***** ******* ********* *********** ************* *********** ********* ******* ***** *** *此实现完全遵循递归范式通过函数调用栈替代循环控制符合题目要求。