Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaでの再帰と反復の違いは何ですか?


再帰 および反復 どちらも一連の命令を繰り返し実行します。 再帰 関数内のステートメントが自分自身を繰り返し呼び出す場合です。 。 反復 ループが制御条件がfalseになるまで繰り返し実行される場合です。 。再帰と反復の主な違いは、再帰です。 はプロセスであり、常に関数と反復に適用されます 一連の指示に適用されます 繰り返し実行したい 。

再帰

  • 再帰は選択構造を使用します 。
  • 無限 再帰 再帰ステップが特定の条件(ベース)に収束する方法で問題を軽減しない場合に発生します ケース )および無限再帰はシステムをクラッシュさせる可能性があります。
  • 再帰はベースケースのときに終了します 認識されます。
  • 再帰は通常反復よりも遅い スタックを維持するためのオーバーヘッドが原因です。
  • 再帰は反復よりも多くのメモリを使用します
  • 再帰によりコードが小さくなります

public class RecursionExample {
   public static void main(String args[]) {
      RecursionExample re = new RecursionExample();
      int result = re.factorial(4);
      System.out.println("Result:" + result);
   }
   public int factorial(int n) {
      if (n==0) {
         return 1;
      }
      else {
         return n*factorial(n-1);
      }
   }
}

出力

Result:24


反復

  • 反復は繰り返しを使用します 構造
  • ループ条件テストがfalseになることがなく、無限ループがCPUサイクルを繰り返し使用する場合、反復で無限ループが発生します。
  • 反復は終了します ループ条件が失敗したとき
  • イテレーションはスタックを使用しません したがって、再帰よりも高速です
  • 反復は少ないメモリを消費します。
  • 反復により、コードが長くなります

public class IterationExample {
   public static void main(String args[]) {
      for(int i = 1; i <= 5; i++) {
         System.out.println(i + " ");
      }
   }
}

出力

1
2
3
4
5

  1. JavaのJFrameとJDialogの違いは何ですか?

    JFrame フレームに追加されたコンポーネントはそのコンテンツと呼ばれ、 contentPaneによって管理されます。 。 JFrameにコンポーネントを追加するには 、 contentPaneを使用する必要があります 代わりに。 JFrame タイトルのウィンドウが含まれています 、境界線 、(オプション)メニュー バー およびユーザー -指定 コンポーネント 。 JFrame 移動できます 、サイズ変更 、アイコン化 JComponentのサブクラスではありません 。 デフォルトでは、JFrameは左上の角に表示されます 画面のr。指定した場所にフレームを表示するには

  2. JavaのGridLayoutとGridBagLayoutの違いは何ですか?

    GridLayout すべてのコンポーネントを長方形のグリッドに配置し、同じサイズの長方形に分割します 各コンポーネントは長方形の中に配置されますが、 GridBagLayout 柔軟です レイアウト マネージャー コンポーネントを垂直方向と水平方向に整列させます コンポーネントが同じサイズである必要はありません。各GridBagLayout オブジェクトは、動的な長方形のセルのグリッドを維持します 各コンポーネントがコンポーネントと呼ばれる1つ以上のセルを占有します 表示 エリア 。 GridLayout GridLayout コンポーネントを長方形のグリッドに配置します。セル