ホームページ >コンピューターのチュートリアル >コンピュータ知識 >Java で再帰を使用して曲線 y=x の二乗と直線 x=1 の交点を計算します。
パブリック クラスのユーティリティ {
public static void main(String[] args) {
System.out.println(getMj(2000));
}
public static double CalculateArea(double n){
if(n==1){
1.0を返す;
###}それ以外{###double r = (n-1) * (n-1) * (n 1) * (2*n 1) / (n * n * n * (2*n-1));
return r*getMj(n-1);
}
}
}
再帰的アルゴリズムの前提は、その一般式を理解することです。2000 は、湾曲した三角形を 2000 個の長方形に分割することを意味します。具体的な原理は、以下の図で見ることができます:
図 1 のアルゴリズムの使用:
an=(n 1)(2n 1) /6n^2
簡単な書き方は以下の通りです:
パブリック クラスのユーティリティ {
public static void main(String[] args) {
System.out.println(getMj(100000));
}
public static double CalculateArea(double n){
return (n 1)*(2*n 1)/(6*n*n);
}
}
Javaの再帰問題
(2) 再帰戦略を使用する場合は、再帰終了とも呼ばれる明確な再帰終了条件があることを確認する必要があります。
再帰アルゴリズムは、通常、次の 3 種類の問題を解決するために使用されます。
(1)データの定義は再帰的に定義されます。 (フィボナッチ関数)(2) 問題解決は再帰的アルゴリズムに従って実装されます。 (トレースバック)
(3) データの構造形式は再帰的に定義されます。
次の例では、n の階乗を再帰的に計算します。
パブリック クラス テスト {
public static int fastial(int n) {
if(n == 0){
1を返す;
###}それ以外{###
n * 階乗(n-1)を返す;}
}
public static void main(String[] args) {
System.out.println(factorial(3));
}
}
Java データ構造における半探索の再帰アルゴリズムについては、専門家の指導をお待ちしています。
パッケージソース;
パブリック クラスの検索 {
if (x == a[左] || x == a[右]) { return true; // 見つかった場合、true を返す }
(right-left) の結果が負の数の場合、右側の値が左側の値より小さいことを意味します。 int mid = (left right)/2; //それ以外の場合: 2 点
if(x == a[mid]) return true; // 中間要素を見つけて true を返します
そうでなければ{ //そうでなければ
x が中央の要素より大きい場合は、バイナリ検索関数 (binarySearch) を返し、配列 (a) の右半分で x の検索を続けます。つまり、binarySearch(a,x,mid 1,right) )。これにより、検索範囲を絞り込むことができ、検索効率が向上します。
else return binarySearch(a, x, left, mid-1); // ターゲット値が中央の要素より小さい場合は、左半分の検索を続けます。
}
}
public static Final int[] sort(int[] a) { // これは整数の配列をソートするために使用されるメソッドです // バブル ソート、挿入ソート、選択ソート、クイック ソートなど、任意のソート アルゴリズムを使用できます。 // ここではバブルソートを使用して配列をソートします for (int i = 0; i
a[j 1]) { // 要素の位置を入れ替える int temp = a[j];
for (int i = 0; i
for (int j = 0; j
if(a[i]swap(a,i,j);
}
}
}
戻り値;
}
private static void swap(int[] a, int i, int j) { //配列 a
内の添字付き要素 i と j の位置を交換するプライベート static 関数 swap を定義します。
int temp = a[i];a[i] = a[j];
a[j] = 温度;
}
public static void print(int[] a) { //印刷関数 for (int i = 0; i System.out.println();
for (int i = 0; i System.out.print(a[i]);
if(i!=a.length-1) { System.out.print(","); }
}
System.out.println();
}
public static void main(String[] args) { //テストメソッド
int[] a = {90, 12, 21, 32, 51, 78, 87, 98}; は 8 つの整数を含む配列です。
print(sort(a));
System.out.println(binarySearch(sort(a), 40, 0, a.length-1)); は、ソートされた配列 a 内の値が 40 の要素を二分検索するために使用されるコードです。
}
}
以上がJava で再帰を使用して曲線 y=x の二乗と直線 x=1 の交点を計算します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。