귀속 함수를 어떻게 쓰는가

1. 귀속은 함수 자체가 자신(직접방식)을 호출하거나 자기 함수 호출의 하급 함수에서 자신(간접방식)을 호출한다는 뜻이다.
귀환은 귀환과 귀환 두 과정으로 나눌 수 있는데 귀환은 바로 하층으로 매개 변수를 전달하는 것이다. 귀환은 함수가 더 이상 아래로 전달되지 않을 때 층층이 되돌아오는 것을 말한다.
2. 쓰기 귀속 함수에 고려해야 할 요소:
a. 변수 하나 또는 여러 개를 어떻게 아래로 옮기는가(절대적인 것은 아니지만 이렇게 하는 것을 추천합니다. 변수는 전달 과정에서 변화가 있어야 합니다.)
b. 귀속을 어떻게 중지하는지는 합리적인 종지 조건을 설정해야 한다(원래의 규칙이 성립되지 않고 함수체가 귀속되기 전의 코드는 다시 중복되지 않는다).
c. 귀속 과정 중의 일시적 또는 중간 결과를 어떻게 보존하는가(모든 귀속이 이 상황을 고려해야 하는 것은 아니다).
주: 귀속 함수는 함수체에서 자신을 몇 번 호출할 수 있는지 제한하지 않지만, 물리 하드웨어는 26만 번(UNIX)을 넘지 않도록 한계가 있다.
예:
#include 

int sum(int n,int tmp)
{  // -----------------------
   if(1>n)//!!! 1. 
   {
      printf("
"); return tmp; } tmp+=n;//!!! 3. 。 int m=n; printf("+%d",n); int ret=sum(--n,tmp);//!!! 2. // ----------------------- printf("+%d ",m);// , printf("sum(%d,%d) ...
",n,tmp); return ret; } int main() { int n=10; printf(" :%d
",sum(n,0)); }

3. 귀속 사유(어떻게 귀속으로 복잡하고 규칙적으로 찾을 수 있는 이런 문제들을 해결하는가).
A. 규칙적인 문제를 해결하는 방안의 전형적인 부분(차원)을 찾고 이 부분(차원)의 코드가 어떻게 실현되어야 하는지만 고려한다.
B. 이 부분(차원)에서는 다음과 같은 생각만 하면 된다.
a. 매개 변수 변수를 어떻게 설정하고 전달을 어떻게 변화시키는가.
b. 종지 조건 문구를 어떻게 쓰는지, 즉 전형적인 규칙을 지키지 않는 상황이 코드상의 종지 조건으로 어떻게 변하는지.
c. 출력해야 할 텍스트 정보를 꼼꼼히 조정한다(배달 과정과 귀속 과정에 놓인 경우 중복 인쇄가 발생하지 않도록 한다).
결론: 귀속 사유의 본질적인 특징은 각 차원에서 실현되는 서로 다른 세부 사항을 잠시 소홀히 하고 고정된 특정한 부분의 비교적 큰 과정 실현에만 주목하면 된다.(규칙적이고 예외적인 상황이 많지 않아 귀환으로 실현하기에 적합하다).

좋은 웹페이지 즐겨찾기