교과서 "Building Java Programs"의 Problem 19 Chapter 12에 설명 된 문제의 변형에 대해 작업하고 있습니다. 필자는 피보나치 시퀀스를 사용하여 재귀 문제를 수행하고 있습니다. 비록 작품을 만들었지 만, 내가 작업하고있는 문제의 일부인 은 피보나치 수를 1, 2, 1로 구현하여 시간을 측정하고 문제를 해결하는 방법을 보여줍니다. 많은 경우에 구현은 문제에서 주어진 것보다 빠릅니다. 이 페이지 (Calculating a Fibonacci number with array)를 보았을 때 많은 코드 변경없이이를 구현하는 방법이 있는지 궁금합니다. 이 때 사용한 원래 방법 :피보나치 수를 45 번 측정하는 방법에 대한 아이디어
public static int fibonacci (int n) {
if(n <= 2){
return 1;
} else {
return fib (n - 1) + fib(n - 2);
}
}
그리고 이것은 내가 두 개의 자바 파일을 사용하여 문제 한 무슨 짓을했는지입니다 :와 테스트의 주요 클래스와 재귀 알고리즘 다른 역할을 하나
를PrintValues.java
import java.util.Scanner;
public class PrintValues {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("Enter the number value: ");
int n = scan.nextInt();
HelperBinary.countBinary(n);
//fib(double nth);
}
}
HelperBinary.Java :
public class HelperBinary {
public static void countBinary(int n) {
if (n < 0) {
throw new IllegalArgumentException();
}
countBinary(new char[n], n);
}
private static void countBinary(char[] preFx, int n) {
if (n == 0) {
/* This is the base case
*/
System.out.println(preFx);
} else {
/* This is the "recursive" case.
*/
final int i = preFx.length - n;
/* Assign a '0' preFx and recurse
*/
preFx[i] = '0';
countBinary(preFx, n - 1);
/*Assign a '1' preFx and recurse
*/
preFx[i] = '1';
countBinary(preFx, n - 1);
}
}
}
어떤 도움 진지하게 감사 할 것입니다.
좋은 방법이지만 모든 방법이 무효이기 때문에 어떻게 길게 fib45 = fib (45)가 작동합니까? –
이것은 메서드 실행을위한 자리 표시 자일 뿐이며 필요한 경우 실행할 수 있습니다. 아무것도 반환하지 않으면 그냥 호출하십시오. 그러나 필자는 fibonacci 번호가 fibonacci 번호를 반환해야한다고 계산하는 방법으로 생각합니다. 그렇지 않으면 유용하지 않습니다. – Matt