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