再帰のwhile / forループなしでJava Streamを使用して最大公約数を見つける

郭景雪:

ここで私を助けてください。次のコードをJavaストリームを使用するコードに変換する必要があります。使用される方法はユークリッドアルゴリズムです。

public int gcd(int m, int n) {
    if (n == 0) {
        return m;
    } else {
        return gcd(n, m%n);
    }

私はすでに次の方法でストリームを使用しようとしましたが、再帰は許可されておらず、宣言的アプローチにまだ慣れていないため、再帰とループのない方法を考え出そうとしています。

return IntStream.of(m, n).reduce(0, (x, y) -> gcd(n, m-n));
Dmitry Pisklov:

ストリームを使用した例として、ユークリッドアルゴのほとんど逐語的な実装:

int gcd(int m, int n) {
    return Stream.iterate(new int[]{m, n}, vals -> new int[] {vals[1], vals[0] % vals[1]}).filter(v -> v[1] == 0).findFirst().get()[0];
}

関数型プログラミングで知られているものをアキュムレータコンセプトとして使用します

PS毎回新しい配列を作成しないように配列の値を交換する方が効率的ですが、この新しい配列を使用しても、別の答えで提供されたブルートフォースよりもはるかに効率的なアルゴリズムです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonで再帰関数を使用して最大公約数を見つける方法は?

分類Dev

除数を見つける関数を使用して、2つの正の整数が与えられた任意の2つの最大公約数を見つけます

分類Dev

MATLABで行列の最大公約数を見つける

分類Dev

SymPyを使用してガウス整数で最大公約数(GCD)を見つける

分類Dev

最大公約数が他のすべてに共通するように、シーケンス内の数値を除外します。除外されたもののインデックスとその最大公約数を見つけます

分類Dev

3つの数の最大公約数を見つける最も効率的な方法は?

分類Dev

PHPの再帰を使用して配列の最大値を見つける

分類Dev

再帰を使用して配列内の最大値を見つける

分類Dev

再帰を使用して配列内の最大要素を見つける

分類Dev

再帰を使用して配列内の最大値を見つける

分類Dev

再帰を使用して配列内の最大相対値を見つける

分類Dev

再帰を使用してPythonの数値リストで最大数を見つける方法

分類Dev

再帰を使用して数の中で最小の要素を見つける方法[C]

分類Dev

再帰的な最大公約数の説明

分類Dev

2つの数値間の最大公約数を見つける単純なJavaプログラムを作成する方法は?

分類Dev

再帰を使用して配列の最小値を見つける?

分類Dev

再帰を使用して数字の合計を見つける

分類Dev

基本的なJava:最大公約数を見つける

分類Dev

Javaで再帰を使用して数値の底2の対数を見つける

分類Dev

再帰とループなしを使用してネストされたリストpythonの最小最大を見つける

分類Dev

最大公約数を見つけるプログラム

分類Dev

再帰的bsearchを使用してリスト内の最大値を見つける時間の複雑さ

分類Dev

ループと乗算なしで再帰呼び出しを使用して値を見つける

分類Dev

最小のプローブを使用して関数の最大値を見つける

分類Dev

再帰なしで二分木の最大深度を見つける

分類Dev

再帰メソッドを使用してすべての可能な数を見つける方法

分類Dev

再帰を使用して文字列内で最長の回文を見つける

分類Dev

再帰を使用して回文を見つける時間の複雑さ

分類Dev

LXMLを使用してXMLのタグを再帰的に見つける方法は?

Related 関連記事

  1. 1

    Pythonで再帰関数を使用して最大公約数を見つける方法は?

  2. 2

    除数を見つける関数を使用して、2つの正の整数が与えられた任意の2つの最大公約数を見つけます

  3. 3

    MATLABで行列の最大公約数を見つける

  4. 4

    SymPyを使用してガウス整数で最大公約数(GCD)を見つける

  5. 5

    最大公約数が他のすべてに共通するように、シーケンス内の数値を除外します。除外されたもののインデックスとその最大公約数を見つけます

  6. 6

    3つの数の最大公約数を見つける最も効率的な方法は?

  7. 7

    PHPの再帰を使用して配列の最大値を見つける

  8. 8

    再帰を使用して配列内の最大値を見つける

  9. 9

    再帰を使用して配列内の最大要素を見つける

  10. 10

    再帰を使用して配列内の最大値を見つける

  11. 11

    再帰を使用して配列内の最大相対値を見つける

  12. 12

    再帰を使用してPythonの数値リストで最大数を見つける方法

  13. 13

    再帰を使用して数の中で最小の要素を見つける方法[C]

  14. 14

    再帰的な最大公約数の説明

  15. 15

    2つの数値間の最大公約数を見つける単純なJavaプログラムを作成する方法は?

  16. 16

    再帰を使用して配列の最小値を見つける?

  17. 17

    再帰を使用して数字の合計を見つける

  18. 18

    基本的なJava:最大公約数を見つける

  19. 19

    Javaで再帰を使用して数値の底2の対数を見つける

  20. 20

    再帰とループなしを使用してネストされたリストpythonの最小最大を見つける

  21. 21

    最大公約数を見つけるプログラム

  22. 22

    再帰的bsearchを使用してリスト内の最大値を見つける時間の複雑さ

  23. 23

    ループと乗算なしで再帰呼び出しを使用して値を見つける

  24. 24

    最小のプローブを使用して関数の最大値を見つける

  25. 25

    再帰なしで二分木の最大深度を見つける

  26. 26

    再帰メソッドを使用してすべての可能な数を見つける方法

  27. 27

    再帰を使用して文字列内で最長の回文を見つける

  28. 28

    再帰を使用して回文を見つける時間の複雑さ

  29. 29

    LXMLを使用してXMLのタグを再帰的に見つける方法は?

ホットタグ

アーカイブ