使用递归的c ++星形输出

时间:2015-04-19 07:44:29

标签: c++ recursion

我正在尝试做这个练习。

编写递归函数以生成星形图案,如下所示:

*
**
***
****
****
***
**
*

看起来很简单,却给了我很多问题。我只能输出这个

*
**
***
****

使用以下代码

#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;   
}

2 个答案:

答案 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");
}