教科書「Building Java Programs」のProblem 19 Chapter 12に記載されている問題のバリエーションに取り組んでいます。本質的には、フィボナッチシーケンスを使って再帰問題を実行しています。私が作ったプログラムは、私が取り組んでいる問題の一部ですが、は、フィボナッチ数を45回取得する時間を測定する必要があります。多くの場合、あなたの実装は問題で与えられたものよりも速いです。私はこのページ(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);
}
}
そして、これは私が、私は2つのJavaファイル使用して問題をやったやったです:再帰アルゴリズムででテストメインクラスとして機能1と他の:
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)はすべてのメソッドが無効なので動作させるのですか? –
これはあなたのメソッドを実行するための単なるプレースホルダですが、必要に応じて実行することができます。何も返されない場合は、単にそれを呼び出します。しかし、私はフィボナッチ数を計算する方法のように感じ、おそらくフィボナッチ数を返すべきです。それ以外の場合は有用ではないようです。 – Matt