首页 >电脑教程 >电脑知识 >使用递归计算Java中曲线y=x的平方与直线x=1的交点

使用递归计算Java中曲线y=x的平方与直线x=1的交点

WBOY
WBOY转载
2024-01-09 09:18:461324浏览

在java中利用递归法计算曲线y x的平方与直线x 1 x轴所包围的曲边

public class Util {

public static void main(String[] args) {

System.out.println(getMj(2000));

}

public static double calculateArea(double n){

if(n==1){

return 1.0;

}else{

double r = (n-1) * (n-1) * (n+1) * (2*n+1) / (n * n * n * (2*n-1));

return r*getMj(n-1);

}

}

}

递归算法前提是要了解它的通项公式,2000意味着将曲边三角形分割成了2000个矩形,具体原理可以参考下图所示:

在java中利用递归法计算曲线y x的平方与直线x 1

采用图1算法:

an=(n+1)(2n+1) /6n^2

简单写法如下:

public class Util {

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递归问题

(1) 递归就是在过程或函数里调用自身;

(2) 在使用递归策略时,必须确保有一个明确的递归结束条件,也被称为递归出口。

递归算法一般用于解决三类问题:

(1)数据的定义是按递归定义的。(Fibonacci函数)

(2)问题解法按递归算法实现。(回溯)

(3)数据的结构形式是按递归定义的。

下面这个例子以递归的方法计算n的阶乘。

public class Test {

public static int factorial(int n) {

if(n == 0){

return 1;

}else{

return n * factorial(n-1);

}

}

public static void main(String[] args) {

System.out.println(factorial(3));

}

}

java数据结构折半查找的递归算法望高手指点!

package souce;

public class Search {

public static boolean binarySearch(int[] a, int x, int left, int right) { // 二分查找的主方法 // ... }

if (x == a[left] || x == a[right]) { return true; // 找到,返回 true }

如果(right-left)的结果是负数,那么表示右边的值比左边的值小。

int mid = (left+right)/2; //否则:二分

if(x == a[mid]) return true; // 找到中间元素,返回true

else{ //否则

如果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);

}

}

}

return a;

}

private static void swap(int[] a, int i, int j) { //定义一个私有静态函数swap,用于交换数组a中下标为i和j的元素的位置

int temp = a[i];

a[i] = a[j];

a[j] = temp;

}

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中文网其他相关文章!

声明:
本文转载于:docexcel.net。如有侵权,请联系admin@php.cn删除