재귀

간결한 예제로 축소하면 재귀는 이해하기 매우 간단한 개념이 될 수 있습니다.

아래 재귀 함수:


f(x,카운트)=10+x+f(x,카운트−1)f(x,\mathrm{카운트}) = 10 + x + f(x,\mathrm{카운트 - 1}) f(x, 카운트)=10+x+f(x,카운트-1)

소환장을 받다

xx 엑스

플로트와

카운트\mathrm{카운트} 카운트

재귀 횟수를 정의하는 인덱스. 이 함수는 재귀할 때마다 이 인덱스를 감소시키고 "0"으로 함수를 종료합니다.

카운트\mathrm{카운트} 카운트

값이 0이 됩니다.
코드에서 이 함수 정의:

#include <bits/stdc++.h>
using namespace std;

double recurAdd(double x, int count)
{
    if (count == 0){return 0;} // termination
    return 10 + x + recurAdd(x, count - 1);
}

// Driver code
int main()
{
    cout << recurAdd(0.5, 3);
    return 0;
}

이 작은 프로그램은 최종 값으로 31.5를 출력합니다. 다음과 같은 방법으로 완전한 재귀를 나타낼 수 있습니다.

f1=10+0.5+(10+0.5+(10+0.5(0)))f_1 = 10 + 0.5 + ( 10 + 0.5 + ( 10 + 0.5 (0) ) ) f1 =10+0.5+(10+ 0.5+(10+0.5(0)))


재귀는 첫 번째 입력 반복에서 마지막 입력 반복까지 다음과 같은 방식으로 분류할 수 있습니다.

f1=10+0.5+f2f2=10+0.5+f3f3=10+0.5+f4f4=0f_1 = 10 + 0.5 + f_2\\f_2 = 10 + 0.5 + f_3\\f_3 = 10 + 0.5 + f_4\\f_4 = 0 f1 =10+0.5+f2 f2 =10+0.5+f3 f3 =10+0.5+f4 f4 =0

마지막 입력 함수 이후

f4f_4 f4

종료되면 작업 실행이 가장 깊은 곳에서 발생하도록 시각화할 수 있습니다.

f4f_4 f4

가장 바깥쪽으로

f1f_1 f1

둥지.

-앤드류

좋은 웹페이지 즐겨찾기