선형 재 귀 와 교체 - 분석 단계
만약 내 가 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 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.