如何在C语言中无循环仅用递归实现星号金字塔图案?
纯递归实现星号金字塔(无任何循环)
我们可以通过新增一个辅助递归函数替代原代码中的for循环,负责逐次打印单个星号,从而实现完全无循环的递归方案。
完整实现代码
#include <stdio.h> void printPattern(int n); void printStars(int count); int main() { int n = 4; printPattern(n); return 0; } void printPattern(int n) { if (n == 1) { printStars(1); printf("\n"); return; } // 先递归打印上层金字塔 printPattern(n - 1); // 递归打印当前行的所有星号 printStars(2 * n - 1); printf("\n"); } // 辅助递归函数:打印count个"* " void printStars(int count) { if (count == 0) return; printf("* "); // 递归处理剩余的星号 printStars(count - 1); }
代码逻辑说明
printPattern负责金字塔的层级递归:从第1层开始向上构建,先递归完成n-1层的打印,再处理当前第n层的内容。printStars是核心辅助函数,接收需要打印的星号数量作为参数,每次打印一个"* "后,递归调用自身处理剩余的星号,直到计数减为0时终止。
输出验证
运行代码后,输出与原代码完全一致:
* * * * * * * * * * * * * * * *
内容的提问来源于stack exchange,提问作者Vihar Ramavat
相关产品推荐
相关产品推荐

