再帰的な方法 (ユークリッドのアルゴリズム) を使用して、最大公約数 (GCD) と最小公倍数 (LCM) を見つけるために作成した単純なスクリプトがあります。
残念ながら、これを複数のステップで行う必要がある場合、関数から返される関連する変数は未定義になります。ブレークポイントを使用してデバッガーでそれを追跡しようとしましたが、これは再帰を適切に追跡し、元の関数に適切に戻るように見えますが、返されることを意図しているにもかかわらず、関数の最後で不思議なことに消えますか?
なぜこれが起こっているのか、それを修正するために何ができるのかわかりません。私のコードは以下の通りです:
function GCD(a, b) {
if (a % b == 0) {
return b;
}
else {
GCD(b, (a % b));
}
}
function LCM (a, b) {
return (a*b)/GCD(a, b);
}
function makeDM (a, b) {
return (GCD(a, b) + " " + LCM(a, b));
}
したがって、60、20 などの a & b を使用すると、20 と 60 の正解が得られます。ただし、20、60、または 126、35 などの数値を使用すると、惨めに失敗します。