선형 재 귀 와 교체 - 분석 단계

1481 단어
더 많은 프로그래머 의 입문 을 돕 기 위해 저 는 컴퓨터 프로그램 을 통 해 이 책의 예 를 설명 하고 구성 하여 몇 가지 예 를 들 어 다른 사람 을 돕 는 동시에 자신 에 게 복습 하 는 것 과 같 습 니 다. 우 리 는 간단 한 예 - 단계 곱 하기 를 보 겠 습 니 다.
     만약 내 가 5 의 곱셈 이 얼마 인지 묻는다 면 공식 에 따라 5 를 뒤 집 을 수 있다.5*4*3*2*1 = 120
     이 알고리즘 은 사실 매우 간단 합 니 다. 다음 과 같이 실현 합 니 다.
     n! = n * (n -1) * (n - 2) ... * 3 * 2 * 1 ;
     자세히 살 펴 보면 하나의 공식 을 발견 하기 어렵 지 않다. n * (n -1)  。
     그래서 우 리 는 곧 조롱박 에 바 가 지 를 그 려 다음 절 차 를 쓸 수 있다.   
#include <stdio.h>

int digui(int num)
{
	if(num == 0)
		return 1 ; 
	if(num < 0)
		return -1 ;
	return num*digui(num-1) ;
}

/*
5!
5*4*3*2*1
5*(5-1)*(5-2)*(5-3)*(5-4)
*/
int main(void)
{
	int num = 0;
	int ret ;
	scanf("%d",&num);
	ret = digui(num) ;
	printf("%d
",ret); return 0 ; }

분석 을 통 해 알 수 있 듯 이 num 이 digui () 라 는 함수 에 참 여 했 을 때 먼저 데이터 의 검 사 를 실시 하고 값 이 1 이나 0 일 경우 1 을 되 돌려 줍 니 다.
        그리고 계속 보 세 요. 만약 num = 5;단계 곱 하기 가 아래 의 재 귀 관 계 를 만족 시 키 면 (n ≥ 1) 다음 컴퓨터 프로그램 은 이렇게 잘 릴 것 이다.
       digui(5)  ---->  5 * digui (5 - 1) = 20, 이때 num 의 값 이 5 에서 4 로 바 뀌 었 습 니 다.
       digui(4)  ---->  5 * 4 * digui (4 - 1) = 60, 이때 num 의 값 이 4 에서 3 으로 바 뀌 었 습 니 다.
       digui(3)  ---->  5 * 4 * 3 * digui (3 - 1) = 120, 이때 num 의 값 이 바 뀌 었 고 3 에서 2 로 바 뀌 었 습 니 다.
       digui(2)  ---->  5 * 4 * 3 * 2 * digui (2 - 1) = 120, 이때 num 의 값 이 바 뀌 었 고 2 에서 1 로 바 뀌 었 습 니 다.
       그래서 최종 결 과 는 120 이다.
    

좋은 웹페이지 즐겨찾기