「java递归方法」java递归方法中变量怎么递归
本篇文章给大家谈谈java递归方法,以及java递归方法中变量怎么递归对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java里的递归方法是不是一定要是静态方法啊?
- 2、JAVA中的递归方法,求讲一下。
- 3、java中递归算法是怎么算的?
- 4、用java递归方法实现
- 5、在JAVA中什么是递归?有什么用?
- 6、用java递归算法求一个数字的阶乘
Java里的递归方法是不是一定要是静态方法啊?
java常用递归代码
//Top代表树的的根节点
private void showNodeList(CollectionNode topList){
for(Node top:topList)
{
//显示顶点
System.out.println(top.getName());
//显示子树
showNodeList(top.getChildren())
}
}
所谓递归就是循环,就是调用你本身的循环体,需要一个出口,不然就是死循环。
请看一个简单的例子
说明:此方法就是调用了递归,recursion(car,i)自已调用了自已的方法。从此方法中,可以先对它进行了传递参数,分别是car(值),i(对递归次数的控制),car=2*(car-3000)这是对car第一次的计算,用if判断是否结束,在这个if判断中把每次递归都放入car,进行计算的值返回。这个递归直到12次,计算car的值都放入了car中,打印出car的总和,结束(出口)
缺点:由此可见递归就是调用自已的,方法与方法之间,类与类之间都可以。当然那我们在使用其的时候,要声明一个操作的终结点(出口)。递归调用会增加内存负担,因为每次调用一回方法都要开辟一段栈空间(先进后出),知道该方法满足条件后才释放。有结束条件了,是非常好的,否则你的递归程序会因为栈空间不足而中止的。
坏处:因为递归需要你的操作系统中的堆和栈,所以空间消耗上要比非递归代码要大的多,而且递归深度太大了,可能系统支撑不了。
用一个方法就可以取到下面所有的子树的集合但方法中传递的时候传递的参数必须是集合,然后遍历此集合,让每一元素通过select * from Id=??去那其下面的子集合,然后遍历出来的子集合直接作为一个参数传递你写的这个方法中,也就是再此调用下此方法,这样最后就可以把每一个分支中的集合都传递过来,最后拿到每个分支中的最后一个分支对象传递过来后,就发现这就是要For循环得到的对象。
Java程序调用自身叫做递归,所以不是一定要静态。
JAVA中的递归方法,求讲一下。
方法递归和循环语句差不多,打个比喻。方法递归是小明上楼拿东西,一楼,二楼,三楼……楼顶。在楼顶拿到想要的东西以后,你总不能直接跳下来吧。你得一层一层的返回下来。循环就是驴拉磨,你转多少圈都是在原地。变化的只是盘子里的东西有变化。方法递归不会进入死循环,但陷的太深系统会崩溃。
答得不好抱歉
java中递归算法是怎么算的?
1.汉诺塔问题
import javax.swing.JOptionPane;
public class Hanoi {
private static final String DISK_B = "diskB";
private static final String DISK_C = "diskC";
private static final String DISK_A = "diskA";
static String from=DISK_A;
static String to=DISK_C;
static String mid=DISK_B;
public static void main(String[] args) {
String input=JOptionPane.showInputDialog("please input the number of the disks you want me move.");
int num=Integer.parseInt(input);
move(num,from,mid,to);
}
private static void move(int num, String from2, String mid2, String to2) {
if(num==1){
System.out.println("move disk 1 from "+from2+" to "+to2);
}
else {
move(num-1,from2,to2,mid2);
System.out.println("move disk "+num+" from "+from2+" to "+to2);
move(num-1,mid2,from2,to2);
}
}
}
2. 这是一个排列的例子,它所做的工作是将输入的一个字符串中的所有元素进行排序并输出,例如:你给出的参数是"abc" 则程序会输出:
abc
acb
bac
bca
cab
cba
(1)算法的出口在于:low=high也就是现在给出的排列元素只有一个时。
(2)算法的逼近过程:先确定排列的第一位元素,也就是循环中i所代表的元素,
然后low+1开始减少排列元素,如此下去,直到low=high
public static void permute(String str) {
char[] strArray = str.toCharArray();
permute(strArray, 0, strArray.length - 1);
}
public static void permute(char[] list, int low, int high) {
int i;
if (low == high) {
String cout = "";
for (i = 0; i= high; i++)
cout += list[i];
System.out.println(cout);
} else {
for (i = low; i= high; i++) {
char temp = list[low];
list[low] = list[i];
list[i] = temp;
permute(list, low + 1, high);
temp = list[low];
list[low] = list[i];
list[i] = temp;
}
}
}
3。这是一个组合的例子,与上述的例子相似,只是它所做的工作是,输出所给字符串中制定数目的元素的组合种类
(1)程序出口在于n=1,此时只要输出目标数组的所有元素即可
(2)逼近过程,当n1 的时候,我们先取第一个元素放入目标数组中,然后n-1,如此下去,最后出来。
import javax.swing.JOptionPane;
public class Combination {
/**
* @param args
*/
public static void main(String[] args) {
String input = JOptionPane.showInputDialog("please input your String: ");
String numString = JOptionPane.showInputDialog("please input the number of your Combination: ");
int num = Integer.parseInt(numString);
Combine(input, num);
}
private static void Combine(String input, int num) {
char[] a = input.toCharArray();
String b = "";
Combine(a, num, b, 0, a.length);
}
private static void Combine(char[] a, int num, String b, int low, int high) {
if (num == 0) {
System.out.println(b);
} else {
for (int i = low; ia.length; i++) {
b += a[i];
Combine(a, num - 1, b, i+1, a.length);
b=b.substring(0, b.length()-1);
}
}
}
}
用java递归方法实现
1、递归做为一种算法在程序设计语言中广泛使用,是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。
2、递归算法一般用于解决三类问题:
1)数据的定义是按递归定义的。(Fibonacci(斐波那契)的函数)
2)问题解法按递归算法实现。(回溯)
3)数据的结构形式是按递归定义的。(树的遍历,图的搜索)
在JAVA中什么是递归?有什么用?
Java方法递归是指在一个方法的内部调用自身的过程,以此类推就是java方法递归的理解思想,具体来讲就是把规模大的问题转化为规模小的相似的子问题来解决。在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况。另外这个解决问题的函数必须有明显的结束条件,这样就不会产生无限递归的情况了。因此,java方法递归的两个条件就是,一通过递归调用来缩小问题规模,且新问题与原问题有着相同的形式;二存在一种简单情境,可以使递归在简单情境下退出。
用java递归算法求一个数字的阶乘
1、采用自顶向上的递归方法,代码如下:
import java.util.Scanner;
public class Test {
@SuppressWarnings("resource")
public static void main(String[] args) {
// 从控制台输入一个整数
Scanner in = new Scanner(System.in);
int b = in.nextInt();
// 声明一个Test对象,调用cal方法获得结果
Test test = new Test();
long a = test.cal(b);
System.out.println(a);
}
// 通过递归掉调用最终返回结果
public long cal(int number) {
// 如果数字为1,则直接返回
if (number == 1) {
return 1;
} else {// 否则递归求值
return number * cal(number - 1);
}
}
}
2、递归方法:
递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数).
3、特点:
(1) 递归就是在过程或函数里调用自身。
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。
java递归方法的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java递归方法中变量怎么递归、java递归方法的信息别忘了在本站进行查找喔。
发布于:2022-12-27,除非注明,否则均为
原创文章,转载请注明出处。