java中递归的作用是什么?为什么要用到递归?
最好是代码加文字老师说递归就是在方法内部对自身进行调用,对自身进行调用怎么理解?怎么样才叫对自身进行调用?...
最好是代码加文字
老师说递归就是在方法内部对自身进行调用,对自身进行调用怎么理解?怎么样才叫对自身进行调用? 展开
老师说递归就是在方法内部对自身进行调用,对自身进行调用怎么理解?怎么样才叫对自身进行调用? 展开
3个回答
展开全部
你的两个问题其实是一个问题,对吧。
递归的作用:递归算法可以解决一些通过递归定义的题目。
首先需要明白什么是递归定义的题目,通俗一点来说就是一个大问题中蕴含着小问题,而小问题同时又与大问题的结构相同,只是规模更小。
比如n阶乘的定义可以理解为:
n!= n*(n-1)!
从上面不难看出 (n-1)! 就是比n! 规模更小的问题,按照此方法不断分解下去,就能得到最初的一些基本的已知的数据。然后反过来就可以求出最终的结果了。
n的阶乘算法如下:
private static int jieCheng(int n) {
if(n == 1)
return 1;
else {
return n*jieCheng(n-1);
}
}
还有就是数据结构中二叉树的定义,也是递归定义的。因此二叉树的好多操作都是通过递归实现的。
用递归会使程序相当简洁。
递归的作用:递归算法可以解决一些通过递归定义的题目。
首先需要明白什么是递归定义的题目,通俗一点来说就是一个大问题中蕴含着小问题,而小问题同时又与大问题的结构相同,只是规模更小。
比如n阶乘的定义可以理解为:
n!= n*(n-1)!
从上面不难看出 (n-1)! 就是比n! 规模更小的问题,按照此方法不断分解下去,就能得到最初的一些基本的已知的数据。然后反过来就可以求出最终的结果了。
n的阶乘算法如下:
private static int jieCheng(int n) {
if(n == 1)
return 1;
else {
return n*jieCheng(n-1);
}
}
还有就是数据结构中二叉树的定义,也是递归定义的。因此二叉树的好多操作都是通过递归实现的。
用递归会使程序相当简洁。
展开全部
递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象.递归是计算机科学的一个重要概念,递归的方法是程序设计中有效的方法,采用递归编写程序能使程序变得简洁和清晰.。
给你个求阶乘的例子:
public long factorial(long n){//求n!
if(n==0)return 1;
else return n*factorial(n-1);//利用递归n!=n*(n-1)!直到0
}
比较经典的递归例子,汉诺塔:
public class T2010_7_9{
static int count=1;
public static void move(char j,char k){
System.out.println("第"+(T2010_7_9.count++)+"步:将一个盘子从柱子"+j+"拿到柱子"+k);
}
public static void hanoi(char a,char b,char c,int n){
if(n==1)move(a,c);
else{hanoi(a,c,b,n-1);
move(a,c);
hanoi(b,a,c,n-1);
}
}
public static void main(String[] args){
char a='A',b='B',c='C';
int num=3;//盘子的个数
hanoi(a,b,c,num);
}
}
给你个求阶乘的例子:
public long factorial(long n){//求n!
if(n==0)return 1;
else return n*factorial(n-1);//利用递归n!=n*(n-1)!直到0
}
比较经典的递归例子,汉诺塔:
public class T2010_7_9{
static int count=1;
public static void move(char j,char k){
System.out.println("第"+(T2010_7_9.count++)+"步:将一个盘子从柱子"+j+"拿到柱子"+k);
}
public static void hanoi(char a,char b,char c,int n){
if(n==1)move(a,c);
else{hanoi(a,c,b,n-1);
move(a,c);
hanoi(b,a,c,n-1);
}
}
public static void main(String[] args){
char a='A',b='B',c='C';
int num=3;//盘子的个数
hanoi(a,b,c,num);
}
}
参考资料: http://baike.baidu.com/view/96473.htm?fr=ala0_1_1
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
递归就是循环。用递归完全是因为懒惰。这样程序员可以少写一些代码。
现代程序要求高可读性与低资源占用。递归完全违反了这两点。所以一般运用在不太占用资源且很普遍运用的地方。
代码?我随意写一个。最简单的循环i到n可以在if中加循环体。
public a(int i,int n){
if(i<n){
return a(i++);
}
return i;
}
看了这两个回答不得不加一段。这个递归如果你是学生那用来炫耀或者解老师的难题不错。如果你想工作,少用递归,除非写某些特殊的工具类。
现代程序要求高可读性与低资源占用。递归完全违反了这两点。所以一般运用在不太占用资源且很普遍运用的地方。
代码?我随意写一个。最简单的循环i到n可以在if中加循环体。
public a(int i,int n){
if(i<n){
return a(i++);
}
return i;
}
看了这两个回答不得不加一段。这个递归如果你是学生那用来炫耀或者解老师的难题不错。如果你想工作,少用递归,除非写某些特殊的工具类。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询