본문 바로가기
Basic C Language

#13. Function 2

by Srff5123 2023. 4. 19.
728x90

#include <stdio.h>

/*
    재귀 함수 // 함수가 함수를 호출하여 반복되는 함수
    - 점화식

    4! 4 3 2 1
*/

void Recursive(int num)
{
    if (num == 0)  // 0이 되면 리턴을 하여 재귀 함수 종료
        return; 

    printf("Hello to myself\n");
    Recursive(num - 1); // num에 -1을 한후 다시 불러오기
}

int Factorial(int n) // 피보나치 수열 만들기
{
    /*
        n * (n - 1) * (n - 2) * (n - 3) * ..... * (n - (n - 2)) * 2 * 1
        => n * (n - 1)!       
    */

    if (n == 0)
        return 1;

    return n * Factorial(n - 1);

    // n * n - 1 * n - 2 * 1
}

/*
    0 1 1 2 3 5 8 13

    0 + 1 = 1
    1 + 1 = 2
    1 + 2 = 3

    n = (n - 1) + (n - 2)
    (n - 1) = (n - 2) + (n - 3)
*/
int Fibonacci(int n)
{
    int f1 = 0, f2 = 1, f3;

    if (n == 1)
        printf("%d", f1);
    else
        printf("%d %d ", f1, f2);

    for (int i = 2; i < n; i++)
    {
        f3 = f1 + f2;
        printf("%d ", f3);

        f1 = f2;
        f2 = f3;
    }

}

int fibonaccirecu(int n)
{
    if (n == 0)
        return 0;
    else if (n == 1)
        return 1;

    return fibonaccirecu(n - 1) + fibonaccirecu(n - 2);
}

int main()
{
    Recursive(3);

    int n;
    scanf_s("%d", &n);

    printf("%d", Factorial(n));


    int n2;
    scanf_s("%d", &n2);

    //Fibonacci(n);

    for (int i = 0; i < n2; i++)
    {
        printf("%d ", fibonaccirecu(i));
    }

    return 0;
}


728x90

'Basic C Language' 카테고리의 다른 글

#15. Array_sort(배열 정렬)  (0) 2023.04.19
#14. Array(배열)  (0) 2023.04.19
#12. Function(함수)  (0) 2023.04.19
#11. UpDown 게임 만들기  (0) 2023.04.12
#10. for(반복문)  (0) 2023.04.12