再帰とループの実行効率とシステム オーバーヘッドをテストします (ここでは 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 サイトの他の関連記事を参照してください。