一道要求使用递归的编程题

来源:百度知道 编辑:UC知道 时间:2024/05/08 13:45:23
要求用只用一个函数递归实现,输入一个N,打印2N层图案,图案样式如下(其中.代表空格)

*..*****
**..****
***..***
****..**
*****..*
*****..*
****..**
***..***
**..****
*..*****
---------------------------------------------
下面是我编出来的用两个函数递归实现的代码,代大家检测结果
---------------------------------------------
#include <stdio.h>
int N;
void fun(int n)
{
if(n==1)
{
for(int i=0;i<n;i++)
{
printf("*");
}
printf("%c%c",32,32);
for(i=0;i<N-n+1;i++)
{
printf("*");
}
printf("\n");

return;
}

fun(n-1);

for(int i=0;i<n;i++)
{
printf("*");
}
printf("%c%c",32,32);
for(i=0;i<N-n+1;i++)
{
printf("*");
}
printf("\n");

}

void anfun(int n)
{
if(n==N)

改了改,你看一下吧,1个函数。
#include <stdio.h>

int N;
void fun(int n, int t, int count)
{
if(count==N)
{
int i;
for(i=0;i<n;i++)
{
printf("*");
}
printf("%c%c",32,32);
for(i=0;i<N-n+1;i++)
{
printf("*");
}
printf("\n");
return;
}
fun(n-t, t, count+1);
int i;
for(i=0;i<n;i++)
{
printf("*");
}
printf("%c%c",32,32);
for(i=0;i<N-n+1;i++)
{
printf("*");
}
printf("\n");
}
int main()
{
printf("please input N\n");
scanf("%d",&N);
fun(N,1,1);
fun(1,-1,1);
return 0;
}