재귀 알고리즘은 자신을 직접 또는 간접적으로 호출하는 알고리즘입니다. 컴퓨터 프로그래밍에서 재귀 알고리즘은 대규모 문제를 해결하는 데 매우 효과적이며 종종 알고리즘 설명을 간결하고 이해하기 쉽게 만듭니다.
질문 1: 숫자 열의 규칙은 다음과 같습니다: 1, 1, 2, 3, 5, 8, 13, 21, 34. 30번째 숫자는 무엇입니까? 재귀를 사용하여
public class FibonacciSequence { public static void main(String[] args){ System.out.println(Fribonacci(9)); } public static int Fribonacci(int n){ if(n<=2) return 1; else return Fribonacci(n-1)+Fribonacci(n-2); } }
구현 질문 2: 하노이 타워 문제
하노이 타워(하노이 타워라고도 함) 문제는 다음과 같습니다. 실제로 인도 전설의 고대 문제입니다.
천지를 창조한 신 브라흐마(중국의 판구와 유사한 신)가 사원에 세 개의 다이아몬드 막대를 남겨 두었습니다. 첫 번째는 64개의 둥근 금 조각으로 덮여 있었고, 가장 큰 것은 바닥에 있었습니다. , 하나씩 다른 것 그것은 작고 차례로 쌓여 있으며, 사원의 승려들은 중간 막대를 보조 수단으로 사용할 수 있다고 규정되어 있지만 한 번에 하나만 이동할 수 있습니다. 큰 것이 작은 것 위에 놓일 수는 없습니다. 누들. 계산 결과는 매우 무섭습니다(원반이 이동한 횟수): 18446744073709551615. 스님들이 평생을 바쳐도 금원반의 이동을 완료하는 것은 불가능합니다.
요구 사항: 첫 번째 기둥에 n개의 디스크가 있음을 나타내는 양의 정수 n을 입력합니다. "t를 x에서 y로 이동" 형식으로 일련의 작업을 출력합니다. 각 작업에는 한 줄이 있습니다. 이는 x열의 t 번호가 붙은 디스크를 y열로 이동하는 것을 의미합니다. 열에는 A, B, C 번호가 매겨져 있습니다. 최소한의 작업으로 모든 플레이트를 A열에서 C열로 옮겨야 합니다.
public class Hanio { public static void main(String[] args){ int i=3; char a ='A',b='B',c='C'; hanio(i,a,b,c); } public static void hanio(int n,char a,char b,char c){ if(n==1) System.out.println("移动"+n+"号盘子从"+a+"到"+c); else{ hanio(n-1,a,c,b);//把上面n-1个盘子从a借助b搬到c System.out.println("移动"+n+"号盘子从"+a+"到"+c);//紧接着直接把n搬动c hanio(n-1,b,a,c);//再把b上的n-1个盘子借助a搬到c } } }
위 내용은 Java 재귀 알고리즘 활용 분석입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!