0

yで割った の整数値を取得するために、このコードを作成しましたxyは常に より大きいx

これを再帰に変換するにはどうすればよいですか?

class Main {

    public static void main(String[] args) {
        System.out.println(fact(3,6));
    }

    static int fact(int x, int y) {
        int counter=0, answer=y;

        while(!(answer==1 || answer<=0)) {
            counter++;
            answer = answer-x;
        }

        return counter;
    }
}
4

4 に答える 4

3
int fact(int x, int y) {
    if (y < x)
        return 0;

    return 1 + fact(x, y-x);
}

または、ワンライナーを好む場合:

int fact(int x, int y) {
    return (y < x ? 0 : 1 + fact(x, y-x));
}

とはいえ、それが宿題だった場合 (そうであることを願っています)、開発者の最大のオンライン コミュニティに頼んだだけです。

そうでない場合は、「これは何をしなければならないのか、どうすればもっとうまくできるのか?」と自問する必要があります。ある整数を別の整数で割るだけでよいようですので、私の反対票を投じた答えよりも簡単なものはありません;)。除算の余りを取得したい場合は、モジュラス ( %) 演算子を使用できます。切り上げたい場合は、自分の API を知って を確認するMath.round()/ceil()/floor()か、残りを確認して (楽しみのために) 自分で行う必要があります (私の反対票を投じた回答のコメントを参照してください)。

ここにいる多くの開発者は、「何を達成しようとしていますか?」と尋ねます (そして、すでにそうしています)。そして彼らは正しいでしょう。プログラミングスキルを向上させたい場合は、全体像を念頭に置いて、なぜこれを書いているのか、その方法を書いているのかという目的を失わないようにすることが、常に必要なことです。

プログラミングを続けてください!:)

于 2013-10-01T14:07:51.960 に答える