。
これを本番で見た場合、question_1(n、n)== nが本当にであるかどうかを確認する必要があります。もしそうなら、なぜそうであるかを示すコメントを追加したいと思います。さもなければ私はそれを修正するだろう。
いずれの場合も、ループではなく%演算子を使用するように書き換えられます。それが正しいなら、このように書き換えることができます
public int question_1(int a, int b)
{
if (a>b)
{
a = ((a-1)%b) + 1;
}
return a;
}
これは、負の数の取り扱いでは同じではありません、しかし、そう再度、あなたはそれはOKだことを確認するためにチェックする必要があると思います。
@ruakhがすでにこのような慎重に検討されている回答を提供している理由は、これはインタビューの質問であるため、仕事上どのようにこのような問題にアプローチするかを示す。
あなたは、あなたが長い時間を費やしてこのような単純な問題について慎重に考える努力をしているという印象を与えたくはありません。単純な問題を解決するために多くの努力を費やさなければならない場合は、あなたは大きなものに何を費やすでしょう!
同時に、可能性のあるバグを認識し、それを修正したり、将来のエンジニアに同じタスクを任せたりすることを実証する必要があります。
これらの種類の質問がインタビューで尋ねられる理由があります。鉛筆と紙を試してみて、いくつかのケースを試してみてください... –
私はそれが 'a%b'と同じだと思います...実際にコードをテストしましたか? –
それであなたは何を答えましたか?おそらくポイントはあなたが注意を払っているかどうかを確認することでしたし、 '(n * m)%n'が' n'を返し、 '0'を返していないことに気づくでしょうか? –