1
私はタスクを持っています、彼らは私に再帰フィボナッチアルゴリズムを与え、時間を返すように頼みます。私はSystemCurrentMilisでこれを行いました。下のコードを投稿しましたが、テスターは時間がかかりすぎると言いました。機能を実行して時間がかかりすぎるので、時間をかけてください。あなたの助けを借りてみましょう。どのようにしてn時間になるかに関わらず、関数timetocomputeをより速く動作させる方法。フィボナッチ再帰の時間を得る方法
import java.math.BigInteger;
import java.math.BigDecimal;
public class Fibonacci {
public BigDecimal timeToComputeRecursiveFibonacci(int n) {
long startTime = System.currentTimeMillis();
recursive(n);
long finishTime = System.currentTimeMillis();
long tempTime = finishTime - startTime;
BigDecimal usedTime = BigDecimal.valueOf(tempTime);
return usedTime;
}
public BigInteger recursive(int n) {
if (n <= 1)
return BigInteger.valueOf(n);
return recursive(n - 1).add(recursive(n - 2));
}
}
ダイナミックなプログラミングが進む道です! n = 3、n = 4のとき何が起こるか考えてみましょう。あなたはrecursiveFメソッドを何回呼び出しますか? – SMA
私はその話題を考えていました。私はcames n = 3のメソッドがnより1回多く呼び出すと思います。私は私の右が願っていますが、私はその助け私が理解していない。私はWebでそのO(2^n)が見つかりましたが、その復帰時間はどういうわけか全く理解できません。 – DwaydeWade
私はあなたの指導者がこれを見つけたら盗作の告発に直面する可能性があることを警告しなければなりません。代わりに、割り当てソリューションをあまりにも多く配らずに問題を示す[**最小**、完全で検証可能な例](http://stackoverflow.com/help/mcve)を作成する必要があります。 –