C 언어 귀환 의 한 노 타 와 개구리 계단 뛰 기 문제

재 귀 는 하나의 함수 집행 과정 에서 자신 을 호출 하 는 것 이다.c 언어 에서 재 귀 에 관 한 전형 적 인 문제 가 많다.예 를 들 어 피 보 나치 수열 문제,한 노 타 문제 등 은 재 귀 문 제 를 연구 할 때 우 리 는 세 가 지 를 주의해 야 한다.
1.재 귀적 종료 조건
2.매번 진행 과정 에서 조건 과 점점 가 까 워 져 야 한다.
3.서로 인접 한 두 번 의 재 귀 호출 간 의 관련 관계
한 노 타 문제:
막대기 가 세 개 있 습 니 다.A,B,C.A 레버 에 N 개(N>1)피 어 싱 원반 이 있 습 니 다.디스크 의 사 이 즈 는 아래 에서 위로 순서대로 작 아 집 니 다.아래 규칙 에 따라 모든 원반 을 C 레버 로 옮 겨 야 합 니 다.
1.매번 원반 하나만 움 직 일 수 있다.
2.큰 접시 가 작은 접시 위 에 접 히 면 안 되 고 원반 을 임시로 B 대 에 놓 을 수도 있 으 며 A 대 에서 옮 긴 원반 을 다시 A 대로 옮 길 수도 있 지만 상기 두 가지 규칙 을 지 켜 야 한다.이동 을 구 하 는 과정.

int step = 0; //      step    
void move(int i,char form,char to){
	printf(" %d ,  %d    %c   %c
", ++step,i,form, to); } void Hanio(int n,char a,char b,char c){ if (n == 0) { return; } Hanio(n - 1,a,c,b); // n-1 A C B move(n, a, c); // A n C Hanio(n - 1, b, a, c); // B n-1 A C } int main(){ int n; printf(" :
"); scanf("%d", &n); Hanio(n, 'A', 'B', 'C'); // n A B C system("pause"); return 0; }
실행 결과:
在这里插入图片描述
개구리 계단 뛰 어 넘 기 문제:
개구리 한 마 리 는 한 번 에 1 단 계단 을 뛰 어 올 라 갈 수도 있 고 2 단 계단 을 뛰 어 올 라 갈 수도 있다.이 개구리 가 n 급 계단 을 뛰 어 올 라 가 는 데 는 모두 몇 가지 점프 방법 이 있 습 니까?
n=1,1 중 점프 만 가능 합 니 다.n=2 시 에는 두 가지 점프 방법 이 있다.n=3 시 에는 세 가지 점프 법 이 있다.n=4 시 에는 5 가지 점프 법 이 있다.n=5 시 에는 8 가지 점프 법 이 있다.f(n)=f(n-1)+f(n-2)로 요약 할 수 있 으 며,본질 적 으로 피 보 나치 수열 과 같다.

int Frog(int n){
	if (n <= 2 && n >= 0)
	{
		return n;
	}
	else if (n < 0)
	{
		printf("      
"); return n; }else { return Frog(n - 1) + Frog(n - 2); } } int main(){ int n; printf(" :
"); scanf("%d", &n); int result = Frog(n); if(n >= 0){ printf(" %d
", result); } system("pause"); return 0; }
실행 결과
在这里插入图片描述
C 언어 재 귀적 인 한 노 타 문제 와 개구리 가 계단 을 뛰 어 내 리 는 문제 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 C 언어 재 귀적 인 한 노 타 개구리 가 계단 을 뛰 어 내 리 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기