평이하게 분석하여 귀속시키다.

1789 단어 귀속
귀속적 개념
모두가 알다시피 한 방법에서 한 가지 또는 여러 가지 방법을 사용할 수 있다.그렇다면 한 가지 방법이 그 자신을 호출할 수 있을까?그래, 방법이 그 자신을 호출하는 과정은 귀속이다.
2. 귀속 응용 사례
  1.승계
가장 간단한 귀속 응용은 한 수의 곱셈을 계산하는 것이다.곱하기 공식:
  n!=n*(n-1)*(n-2)*...1. 예: 5!=5*4*3*2*1.
코드는 다음과 같습니다.
public static long jieCheng(int n) {

	if(n>1)

		return n*jieCheng(--n);

	else 

		return 1;

} 


  2.피보나치 수열
피보나치 수열의 배열 대형은 1,2,3,5,8,13,21,34와 같다.즉, f(1)=1, f(2)=1, n>2일 때 f(n)=f(n-1)+f(n-2).
코드는 다음과 같습니다.
public long fibRecursion(int index) {

	if(index==1 || index==2) {

		return 1;

	}

	return fibRecursion(index-2)+fibRecursion(index-1);

}


  3.한노타
X, Y, Z로 명명된 3개의 탑이 있다고 가정하면 탑좌 X에 n개의 직경 크기가 각각 다르고 위에서 아래로, 작은 것부터 큰 것까지 1, 2, 3...원반 n개.이제 X 축의 n 개의 원반을 탑 받침대 Z 위로 옮기고 같은 순서로 겹쳐 배열할 것을 요구합니다.디스크를 이동할 때는 다음 규칙을 따라야 합니다.
a. 한 번에 하나의 디스크만 이동할 수 있습니다. 
b. 원반은 X, Y, Z 중 어느 탑 받침대에 꽂을 수 있다.
c. 어느 순간에도 비교적 큰 원반을 비교적 작은 원반 위에 눌러서는 안 된다. 
분석:
F[n]를 설정하면 n개의 디스크를 규칙에 따라 X기둥에서 Z기둥으로 옮기는 절차를 나타낸다. 분명히 n=1일 때 F[n]=1;n>1일 때, 우리는 디스크를 이동하는 과정을 세 단계로 나눌 것이다.
(1) X기둥에 있는 n-1개의 디스크를 Z기둥에 기대어 Y기둥으로 옮기려면 F[n-1]보가 필요하다.
(2) X기둥에 남은 접시(최대 접시)를 Z기둥으로 옮기는데 1걸음이 걸린다.
(3) Y기둥에 있는 n-1개의 디스크를 X기둥에 의지하여 Z기둥으로 옮기려면 F[n-1]보가 필요하다.
코드는 다음과 같습니다.
public void hanoi(int level,String a,String b,String c) {

	if(level==1) {

		System.out.println("MOVE "+a+" TO "+c);

	} else {

		hanoi(level-1,a,c,b);    // , n-1 A B

		System.out.println("MOVE "+a+" TO "+c);        // , n ( ) A C

		hanoi(level-1,b,a,c);    // , n-1 B C

	}

}


3. 총결산
귀환의 표현은 다양하다. 한 번의 방법 자체(예를 들어 곱하기)만 호출할 수 있고 방법 자체(예를 들어 한노타)를 여러 번 호출할 수 있으며 방법 내의 한 표현식에서 자신을 여러 번 호출할 수도 있다(예를 들어 피보나치 수열).

좋은 웹페이지 즐겨찾기