Ich würde vermuten, dass ihr Zweck ein% b für positive ints zu berechnen ist, und dass es einen Fehler hat .
Wenn ich dies in der Produktion sah, würde ich die Verwendung dieser Funktion überprüfen müssen, um zu sehen, ob Frage_1 (n, n) == n ist wirklich richtig. Wenn ja, würde ich einen Kommentar hinzufügen, der angibt, warum das so ist. Sonst würde ich es reparieren.
In jedem Fall könnte es umgeschrieben werden, den Operator% anstelle einer Schleife zu verwenden. Wenn es richtig ist, könnte es wie folgt neu geschrieben werden:
public int question_1(int a, int b)
{
if (a>b)
{
a = ((a-1)%b) + 1;
}
return a;
}
Dies ist im Umgang mit negativen Zahlen nicht gleich ist, obwohl, so wieder würden Sie überprüfen, um sicherzustellen, das ist OK.
Der Grund, warum ich diese Antwort gebe, wenn @ruakh solch eine sorgfältig durchdachte Antwort gegeben hat, ist, dass es eine Interviewfrage ist, also ist es am besten, wenn Sie die Gelegenheit nutzen, um zu zeigen, wie Sie ein solches Problem angehen würden .
Sie möchten nicht wirklich den Eindruck erwecken, dass Sie eine lange Zeit und viel Mühe darauf verwenden würden, sorgfältig über ein so einfaches Problem nachzudenken - wenn Sie so viel Aufwand aufwenden müssen, um ein einfaches Problem zu lösen Was würdest du für einen großen ausgeben?
Gleichzeitig möchten Sie zeigen, dass Sie den möglichen Fehler erkennen, und die Initiative ergreifen, um es zu beheben oder zukünftigen Ingenieuren die gleiche Aufgabe zu ersparen.
Es gibt einen Grund, warum diese Art von Fragen in Interviews gestellt werden. Pencil und Papier und versuche ein paar Fälle ... –
Ich denke, es ist äquivalent zu "a% b" ... hast du tatsächlich den Code getestet? –
Was haben Sie dann beantwortet? Vielleicht ging es darum zu sehen, ob du aufpasst und bemerkst, dass '(n * m)% n '' n' und nicht '0' zurückgegeben hat? –