자바를 이용해 피보나치 수열을 구현했다.
1번 부분은 n번째 피보나치 수 구하기
2번 부분은 integer 범위에서 피보나치 수를 몇 번째까지 구할 수 있는지를
3번 부분은 long 범위에서 피보나치 수를 몇 번째까지 구할 수 있는지를 구하는 코드이다.
음... 1번 부분에서 구한 것을 2, 3번에서 다시 구하려고 하니까 똑같은 작업을 반복하는군..
그냥 배열을 이용해서 다시 써봐야겠다.
import java.util.Scanner;
public class Fibonacci {
public static void main
(String[] args
) { Scanner scan =
new Scanner
(System.
in);
int n;
int maxFibInt = 0;
long maxFibLong = 0;
//1.
System.
out.
print("FibonacciInt Test. Insert n to find n-th Fibonacci number: ");
n = scan.nextInt();
System.
out.
println(n +
"-th Fibonacci number is " + getFibInt
(n
));
n = scan.nextInt();
System.
out.
println(n +
"-th Fibonacci number is " + getFibLong
(n
));
//2.
for(int i = 1; getFibInt(i - 1) + getFibInt(i) >= 0; i++)
maxFibInt = getFibInt(i+1);
System.
out.
println("Maximum Fibonacci number with \"int\": " + maxFibInt
);
//3.
for(int i = 1; getFibLong(i - 1) + getFibLong(i) >= 0; i++)
maxFibLong = getFibLong(i+1);
System.
out.
println("Maximum Fibonacci number with \"long\":" + maxFibLong
);
}
public static int getFibInt(int n) {
int fibInt = 1, f0 = 1, f1 = 1, temp;
int i;
if(n == 0)
return f0;
if(n == 1)
return f1;
for(i = 1; i < n; i++) {
temp = fibInt;
fibInt = f0 + f1;
f0 = f1;
f1 = fibInt;
}
return fibInt;
}
public static long getFibLong(int n) {
long fibLong = 1, f0 = 1, f1 = 1, temp;
int i;
if(n == 0)
return f0;
if(n == 1)
return f1;
for(i = 1; i < n; i++) {
temp = fibLong;
fibLong = f0 + f1;
f0 = f1;
f1 = fibLong;
}
return fibLong;
}
}