0

私は Javascript で FizzBu​​zz ゲームをしなければならない課題を抱えています。問題は、最初の繰り返しの後にループが停止し、最初の値 (4) のみを返すことです。私は自分のコードを知らないかもしれませんが、エラーがどこにあるのかわかりません。正しい方向に私を押していただければ幸いです。前もって感謝します。よろしく、トーマス。

function fizzBuzz(start, stop) {

    for(var i = start; i <= stop; i++) {
        if (i % 3 == 0) {
            return "fizz";
        }else if( i % 5 == 0) {
            return "buzz";
        }else if(i % 15 == 0) {
            return "fizz buzz";
        }else {
            return i;
        }
    }
}

ANSWER = (fizzBuzz(4, 22));

新しいコード:

function fizzBuzz(start, stop) {

for(var i = start; i <= stop; i++) {
    if (i % 3 == 0 && i % 5 == 0) {
        document.write ("Fizz Buzz");
    }else if(i % 3 == 0) {
        document.write ("Fizz");
    }else if(i % 5 == 0) {
        document.write ("Buzz");
    }else {
        document.write(i);
    }
}
}

ANSWER = (fizzBuzz(4, 22));

戻り値: 回答 = 未定義

4

3 に答える 3

1

for ループ内でどのような分岐が取られてもreturn、戻り値で関数を終了する a が常に存在します。したがって、4 から開始すると、プログラムは else 分岐に入り、4 を返します。

あなたが望むのは、関数から戻る代わりに値を出力することです。

また、コードに論理エラーが見られます。i が 15 で、3 と 5 で割り切れると仮定します。プログラムはi % 3分岐に入り、「fizz バズ」の代わりに「fizz」を返します。if ステートメントを変更したり、文字列連結を使用したりすることが必要になる場合があります。

私が助けてくれることを願っています。;)

于 2015-03-11T22:03:38.977 に答える