2013년 8월 13일 화요일

[Java Fibonacci, 오라클자바community]자바로 구현한 비보나치 수열

fibonacci 수열이란 


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(신입사원채용무료교육, 오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷)  
1, 1, 2, 3, 5, 8, 11,,, 등과 같이 
처음과 두번째 항은 1이고, 이후의 것들은 앞의 두값을 더하는 구조로 되어 
있다...

즉 f(n) = f(n-1) + f(n-2)

우선 반복적 알고리즘(비 재귀적 알고리즘)으로 이를 구현해 보자...

class Fibo {
long fibo(int value) {
int jun=1, hoo=1, tmp=0;
if (value == 1 || value== 2){
return 1;
}
for(int i=3;i<=value; i++) {
tmp = hoo;
hoo = jun + hoo;
jun = tmp;
}
return hoo;
}

public static void main(String[] args) {
if (args.length<1) {
System.out.println("Usage : java Fibo number ");
System.exit(1);
}
                int value = Integer.parseInt(args[0]);
                Fibo f = new Fibo();
System.out.println("입력숫자 : " + value);
System.out.println("--- 피보나치 수열 ---");
for(int i=1; i <= value; i++) {
System.out.print(f.fibo(i) + "  ");
if (i % 8 ==0)System.out.println("");
}
System.out.println("");
}
}

아래에는 재귀호출을 이용하여 쪽 같이 구현해 보았다...

class Fibo1 {
long fibo(int value) {
if (value == 1 || value== 2){
return 1;
}
return fibo(value-1) + fibo(value -2);
}

public static void main(String[] args) {
if (args.length<1) {
System.out.println("Usage : java Fibo1 number ");
System.exit(1);
}
                int value = Integer.parseInt(args[0]);
Fibo1 f = new Fibo1();

System.out.println("입력숫자 : " + value);

System.out.println("--- 피보나치 수열 ---");
for(int i=1; i <= value; i++) {
System.out.print(f.fibo(i) + "  ");
if (i % 8 ==0)System.out.println("");
}
System.out.println("");
}

댓글 없음:

댓글 쓰기