问题:用C语言输出下面的图形
一般的解法是设菱形的中心为坐标原点,然后用嵌套的for循环输出,但这种方法需要很多的分析。如果用递归的角度考虑问题,将会得到很大的简化。
#include <stdio.h>
void printLine(int space,int star){
int i;
for(i=0;i<space;i++){
putchar(' ');
}
for(i=0;i<star;i++){
putchar('*');
}
putchar('\n');
}
void draw(int space,int star){
if(space==0){
printLine(space,star); //输出最长的行,此时空格数为0
}
else{
printLine(space,star);
draw(space-1,star+2); //下一行空格减少1个,星号增加2个
printLine(space,star);
}
}
int main()
{
int n;
scanf("%d",&n);
draw(n-1,1);//第一行有n-1个空格,1个星号
return 0;
}