使用递归法在Java中计算曲线y = x的平方与直线y = x的交点
在java中利用递归法计算曲线yx的平方与直线x1x轴所包围的曲边publicclassUtil{publicstaticvoidmain(String[]args){System.out.println(getMj(2000));}publicstaticdoublecalculateArea(doublen){if(n==1){return1.0;}else{doubler=(n-1)*(n-1)*(n+1)*(2*n+1)/(n*n*n*(2*n-1));returnr*getMj(n-1);}}}
在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个矩形,具体原理可以参考下图所示:

采用图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)的结果是负数,那么表示右边的值比左边的值小。<2)return false; //可找元素小于3,由上一步说明没有,返回假
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.length - 1; i++) { for (int j = 0; j < a.length - i - 1; j++) { if (a[j] > a[j + 1]) { // 交换元素位置 int temp = a[j];
for (int i = 0; i < a.length; i++) { // 在这里添加你的代码 }
for (int j = 0; j < a.length; 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 < a.length; i++) { // 在这里添加你的代码 } System.out.print(a[i] + " "); } }
System.out.println();
for (int i = 0; i < a.length; 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的元素的代码。
}
}
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。














