使用递归的星星的 C++ 输出

c++ output of stars using recursion

本文关键字:C++ 输出 星星 递归      更新时间:2023-10-16

我正在尝试做这个练习。

编写一个递归函数来生成星形模式,如下所示:

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

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

*
**
***
****

使用以下代码

#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 个参数。 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);
#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");
}