我正在尝试做这个练习。
编写递归函数以生成星形图案,如下所示:
*
**
***
****
****
***
**
*
看起来很简单,却给了我很多问题。我只能输出这个
*
**
***
****
使用以下代码
#include <iostream>
using namespace std;
void outputStars(int);
int main()
{
outputStars(5);
return 0;
}
void outputStars(int num)
{
if (num == 1)
{
return;
}
outputStars(--num);
for (int i = 0; i < num ; i++)
{
cout << "*";
}
cout << endl;
}
答案 0 :(得分:0)
您只是在通话时打印星星。在打电话之前打印它。
我已将其修改为2个参数。 i
指定在通话中打印*
的次数
void outputStars(int num,int i)
{
if (i == num)
{
return;
}
for (int j = 0 ;j < i; j++)
{
cout << "*";
}
cout << endl;
outputStars(num,i+1);
for (int j = 0; j < i; j++)
{
cout << "*";
}
cout << endl;
将其命名为
outputStars(5,1);
答案 1 :(得分:0)
#include <stdio.h>
void rec_fun(int x);
void print_stars(int times, int x);
int main(int argc, char *argv[])
{
rec_fun(5);
return 0;
}
void rec_fun(int x)
{
static int times = x;
if (x <= 0)
return;
print_stars(times, x);
rec_fun(x - 1);
if (x != 1)
print_stars(times, x);
}
void print_stars(int times, int x)
{
int i;
for (i = 0; i < times - x + 1; i++)
printf("*");
printf("\n");
}