>  기사  >  Java  >  Java 재귀 알고리즘 활용 분석

Java 재귀 알고리즘 활용 분석

黄舟
黄舟원래의
2016-12-19 14:17:351782검색

재귀 알고리즘은 자신을 직접 또는 간접적으로 호출하는 알고리즘입니다. 컴퓨터 프로그래밍에서 재귀 알고리즘은 대규모 문제를 해결하는 데 매우 효과적이며 종종 알고리즘 설명을 간결하고 이해하기 쉽게 만듭니다.

질문 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 =&#39;A&#39;,b=&#39;B&#39;,c=&#39;C&#39;;
        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)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.