如何在C中调用相同的函数3次?

Dav*_*rpa -1 c recursion

我试图找出如何获得一个函数(在我的情况下,我做了一个笑脸)使用递归调用自己3次.我的老师对他的教学并不彻底,我不知道在代码中放什么来通过这种方法重复这个功能.我的代码看起来像

#include <stdio.h>

int main()
{
    printf("  * * * *\n");
    printf("*          *\n");
    printf("    .    .\n");
    printf("*          *\n");
    printf("*    \\_/   *\n");
    printf("*          *\n");
    printf("  * * * *\n");
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Jer*_*myP 10

对于递归,您需要两件事:

  1. 该函数调用自身但具有问题的"更简单"版本的解决方案
  2. 不发生递归的基本情况

通常的例子是factorial.n!适用n * (n - 1)!于大于0的所有数字(这是第一部分),0!并定义为1(这是第二部分).

int factorial(int n) 
{
    assert(n >= 0); // Otherwise, trouble!
    if (n == 0)
    {
        return 1;
    }
    else
    {
        return n * factorial(n - 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,要将脸部打印三次,请先将其打印两次,然后再次打印.概括地说,对于n> 0,打印面部n - 1次,然后再次打印.并且对于n = 0,什么都不做.

因此,您的递归函数应该使用一个参数n来告诉它打印面部的次数.如果n大于0,它应递归调用自身打印面部n - 1时间,然后再次打印面部.

确切的代码,我会留给你.

  • 角落:`factorial(0)`是[定义明确](https://math.stackexchange.com/questions/25333/why-does-0-1)建议`assert(n> = 0); if(n <= 1)......` (2认同)