fibonacci 수열이란
오라클자바커뮤니티에서 설립한 오엔제이프로그래밍
실무교육센터
처음과 두번째 항은 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("");
}
}
(신입사원채용무료교육, 오라클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("");
}
}
댓글 없음:
댓글 쓰기