0

分数の関係で2つの数を減らす関数を作りました。それは完全に機能しますが、問題は値を返さないことです。新しい変数を宣言してから返すなど、いろいろ試してみましたがうまくいきません。また、いくつかの console.logs を追加して、特定の場所で停止しているかどうかを確認しましたが、何も返されていません。

これが私のコードです:

function reduceFraction(n, d) {
    var numerator = n;
    var denominator = d;

    if (n % 7 === 0 && d % 7 === 0) {
        numerator /= 7;
        denominator /= 7;
        console.log('Divided by 7');
        reduceFraction(numerator, denominator);
    } else {
        if (n % 5 === 0 && d % 5 === 0) {
            numerator /= 5;
            denominator /= 5;
            console.log('Divided by 5');
            reduceFraction(numerator, denominator);
        } else {
            if (n % 3 === 0 && d % 3 === 0) {
                numerator /= 3;
                denominator /= 3;
                console.log('Divided by 3');
                reduceFraction(numerator, denominator);
            } else {
                if (n % 2 === 0 && d % 2 === 0) {
                    numerator /= 2;
                    denominator /= 2;
                    console.log('Divided by 2');
                    reduceFraction(numerator, denominator);
                } else {
                    console.log('Was not divided by anything');
                    var reduced = numerator + "/" + denominator;
                    return reduced; //console.log(numerator + "/" + denominator); logs 1/18
                }
            }
        }
    }
}
reduceFraction(3, 54);

一連のifステートメントをネストすることが何かをしなければならないかどうかはわかりませんが、それが分数を減らす唯一の方法です(私が考えることができます)...事前に感謝します。

4

2 に答える 2

3

return再帰関数では、 tooが必要です:

すべてを交換してください

    reduceFraction(numerator, denominator);

このような :

    return reduceFraction(numerator, denominator);
于 2013-10-26T19:59:01.833 に答える
0

あなたはそれを返さなければなりません

 function reduceFraction(n, d) {
    var numerator = n;
    var denominator = d;

    if (n % 7 === 0 && d % 7 === 0) {
        numerator /= 7;
        denominator /= 7;
        console.log('Divided by 7');
        return reduceFraction(numerator, denominator);
    } else {
        if (n % 5 === 0 && d % 5 === 0) {
            numerator /= 5;
            denominator /= 5;
            console.log('Divided by 5');
            return reduceFraction(numerator, denominator);
        } else {
            if (n % 3 === 0 && d % 3 === 0) {
                numerator /= 3;
                denominator /= 3;
                console.log('Divided by 3');
                return reduceFraction(numerator, denominator);
            } else {
                if (n % 2 === 0 && d % 2 === 0) {
                    numerator /= 2;
                    denominator /= 2;
                    console.log('Divided by 2');
                    return reduceFraction(numerator, denominator);
                } else {
                    console.log('Was not divided by anything');
                    var reduced = numerator + "/" + denominator;
                    return reduced; //console.log(numerator + "/" + denominator); logs 1/18
                }
            }
        }
    }
}
return reduceFraction(3, 54);
于 2013-10-26T20:00:18.700 に答える