역귀함수 실행 순서
1825 단어 데이터 구조와 알고리즘
/*반복 예*/
#include
void up_and_down(int);
int main(void)
{
up_and_down(1);
return 0;
}
void up_and_down(int n)
{
printf("Level %d:n location%p
",n,&n); /* 1 */
if(n<4)
up_and_down(n+1);
printf("Level %d:n location%p
",n,&n); /* 2 */
}
결과 내보내기
Level 1:n location 0240FF48
Level 2:n location 0240FF28
Level 3:n location 0240FF08
Level 4:n location 0240FEE8
Level 4:n location 0240FEE8
Level 3:n location 0240FF08
Level 2:n location 0240FF28
Level 1:n location 0240FF48
우선main()은 매개 변수 1을 사용하여 함수 up 를 호출했습니다and_down (), 그래서 upand_down ()에서 형식 매개 변수 n의 값이 1이기 때문에 인쇄 문장 #1이 Level1을 출력합니다.
그리고 n의 수치가 4보다 작기 때문에 upand_down () (1 단계) 매개 변수 n+1 즉 수치 2로 up 호출and_down () (레벨 2).로 하여금
레벨 호출에 값이 2로 지정되고 플롯 문 #1은 Level2로 출력됩니다.이와 유사하게 다음 두 번의 호출은 각각 Level3과 Level4를 출력합니다.
4급 호출을 시작할 때 n의 값은 4이기 때문에if문장의 조건이 충족되지 않습니다.이 때 upand_down () 함수.레벨 4 호출
n의 값이 4이기 때문에 인쇄문 #2를 실행하여 Level4를 출력합니다.현재 함수는return 문장을 실행해야 합니다. 이 때 4 단계 호출이 끝나면 제어권을 이 문장에 되돌려줍니다.
함수의 호출 함수, 즉 3급 호출 함수.3급 호출 함수 중 이전에 실행된 문장은if문장에서 4급 호출을 진행한다.그래서
후속 코드, 즉 인쇄 문장 #2를 계속 실행하면 Level3이 출력됩니다. 레벨 3 호출이 끝나면 레벨 2 호출 함수가 계속 실행됩니다. 즉, 출력입니다.
Level2. 순서대로 유추한다.
각 단계의 귀환은 자신의 개인 변수를 사용합니다. 주소의 값을 볼 수 있습니다.
반복의 기본 원리:
1 함수 호출마다 한 번씩 되돌아옵니다. 프로그램이 특정한 등급의 귀환의 끝에 실행될 때, 이전 등급의 귀환으로 옮겨져 계속 실행됩니다.
2 귀속 함수 중 귀속 호출 전에 있는 문장과 각급 피조 함수는 같은 순서를 가진다. 예를 들어 인쇄 문장 #1이 귀속 호출 문장 앞에 있으면 귀속 호출 순서에 따라 4차례 집행된다.
3 각 단계의 함수 호출은 모두 자신의 사유 변수를 가지고 있다.
4 귀속 함수 중 귀속 호출 문장 뒤에 있는 문장의 집행 순서는 각 호출 함수의 순서와 상반된다.
5 각 단계마다 자신의 변수가 돌아가지만 함수 코드는 복제되지 않는다.
6 귀속 함수에는 귀속 호출을 중지할 수 있는 언어가 포함되어 있어야 한다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
두 갈래 나무의 깊이가 두루 다니다텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.