C 재귀


재귀란 함수의 정의에서 함수 자체를 이용하는 방법을 말합니다.

예:
옛날에 산이 있었고, 그 산속에 절이 있었는데, 그 절에 늙은 스님이 있었는데, 그가 젊은 스님에게 이야기를 하고 있었어요! 무슨 이야기인가요? “옛날에 산이 있었고, 그 산에 사찰이 있었습니다. 절에 늙은 스님이 있었는데, 그가 젊은 스님에게 이야기를 들려주고 있었습니다! 무슨 이야기일까요? , 산이 있고, 산속에 사찰이 있었는데, 그 사찰에 늙은 스님이 있었는데, 어린 스님에게 이야기를 들려주더군요.. .'"

구문 형식은 다음과 같습니다.

void recursion(){
   recursion(); /* 函数调用自身 */}int main(){
   recursion();}

C 언어는 재귀를 지원합니다. 즉, 함수가 자기 자신을 호출할 수 있습니다. 그러나 재귀를 사용할 때 프로그래머는 함수 종료 조건을 정의하는 데 주의를 기울여야 합니다. 그렇지 않으면 무한 루프에 들어갈 것입니다.

재귀 함수는 숫자의 계승 계산, 피보나치 수열 생성 등과 같은 많은 수학적 문제를 해결하는 데 중요한 역할을 합니다.

숫자의 계승

다음 예에서는 재귀 함수를 사용하여 주어진 숫자의 계승을 계산합니다.

#include <stdio.h>double factorial(unsigned int i){   if(i <= 1)   {      return 1;   }   return i * factorial(i - 1);}int  main(){    int i = 15;
    printf("%d 的阶乘为 %f\n", i, factorial(i));    return 0;}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

15 的阶乘为 1307674368000.000000

피보나치 수열

다음 예에서는 재귀 함수를 사용하여 주어진 숫자의 피보나치 수열을 생성합니다.

#include <stdio.h>int fibonaci(int i){   if(i == 0)   {      return 0;   }   if(i == 1)   {      return 1;   }   return fibonaci(i-1) + fibonaci(i-2);}int  main(){    int i;    for (i = 0; i < 10; i++)    {
       printf("%d\t%n", fibonaci(i));    }    return 0;}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

0112358132134