で同じアルゴリズムに異なる答えを与えています。 Pythonで同じアルゴリズムを使用すると、私は別の(そして正しい)答えを得ます。Javascriptが私はロザリンドの問題<a href="http://rosalind.info/problems/fibd/">Mortal Fibonacci Rabbits</a>に取り組んでいるとのウェブサイトは、私は私のアルゴリズム書かれたJavaScriptを使用している場合、私の答えは間違っている私に言って続けてPythonの
矛盾結果が大きくなる場合にのみ発生します。例えばfibd(90, 19)
JavaScriptで2870048561233730600
を返しますが、Pythonで、私は2870048561233731259
を取得します。
私に異なる答えを与えるか、私のJavaScriptコードの微妙な間違いを犯していますJavaScriptでの数字についての何かはありますか?
JavaScriptのソリューション:
function fibd(n, m) {
// Create an array of length m and set all elements to 0
var rp = new Array(m);
rp = rp.map(function(e) { return 0; });
rp[0] = 1;
for (var i = 1; i < n; i++) {
// prepend the sum of all elements from 1 to the end of the array
rp.splice(0, 0, rp.reduce(function (e, s) { return s + e; }) - rp[0]);
// Remove the final element
rp.pop();
}
// Sum up all the elements
return rp.reduce(function (e, s) { return s + e; });
}
ザ・パイソン・ソリューション:
def fibd(n, m):
# Create an array of length m and set all elements to 0
rp = [0] * m
rp[0] = 1
for i in range(n-1):
# The sum of all elements from 1 the end and dropping the final element
rp = [sum(rp[1:])] + rp[:-1]
return sum(rp)
戻りますか?私はあなたのコードを実行し、入力(10,10)と同じ結果を返します。 "; - ([0] RP)0、0、rp.reduce(関数(E、S){リターンS +電子}); rp.splice" しかし、私はミスを見ることができます。そうかもしれない?そうでなければ、相違点がありますか? –
良い点。私は例を追加しました。それはより大きな入力に起こります。タイプミスをうまくキャッチする。ありがとうございますが、それは問題ではありません。それは問題の変数名を同じにしようとしている私だけでした。タイプミスが修正されました – Cristian