ホームページ  >  記事  >  Java  >  Java で再帰とループをテストするにはどうすればよいですか?

Java で再帰とループをテストするにはどうすればよいですか?

PHPz
PHPz転載
2023-04-23 19:40:161480ブラウズ

再帰とループの実行効率とシステム オーバーヘッドをテストします (ここでは for が使用されています)。まず、問題例を投稿します: フィボナッチ数列の実装 F(n)=F(n-1) F(n-2)

テスト環境 Eclipse

1. まず再帰を使用して

package com.youfeng.test;   public class Fab {//递归   public static void main(String [] args){       System.out.println(F(40));   }   public static Long F(int index){       if(index==1||index==2){           return 1L;      }      else{          return F(index-1)+F(index-2);      }  }  }

2. for ループを使用して実装

package com.youfeng.test;  public class Fab2 {//循环      public static void main(String [] args){          System.out.println(F(40));      }      public static Long F(int index){          if(index==1||index==2){              return 1L;          }          else{              Long f1=1L;              Long f2=1L;              Long f=0L;              for(int i=0;i<index;i++){                  f1=f2;                  f2=f;                  f=f1+f2;              }              return f;          }      }  }

index の値が非常に大きい場合小さい場合は別々に実行します 違いはありません 実行速度の違いは感じられませんが、インデックスを十分大きな値 (100、200、300、1000...) に調整すると、for ループで簡単に処理できるようになります実行速度が非常に速い。

再帰を使用すると、明らかな詰まりが見つかります。システム リソース マネージャーを呼び出して、システムのオーバーヘッドを確認します (スタックしてリソース マネージャーを開けない場合があります)。

以上がJava で再帰とループをテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。