递归算法
Posted ggboy-wu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归算法相关的知识,希望对你有一定的参考价值。
递归算法是方法内调用自身;
递归算法必须要有个明确的条件作为算法结束的出口,被称为递归出口;
递归算法的不足:在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。
递归算法有个很重要的就是递归算法的出口条件,满足出口条件,就不递归了。
举个栗子:代码如下:
class Factorial {
//递归函数
int fact(int n){
if(n==1){
return 1;
}else{
return fact(n-1)*n;
}
}
}
public class TestFactorial {
public static void main(String[] args) {
Factorial factorial= new Factorial();
System.out.println("factorial(10)="+factorial.fact(10));
}
}
结果截图:
再举个栗子:这是个移动盘子的实验
public class Hanio {
public static void main(String[] args){
int i=3;
char a =‘A‘,b=‘B‘,c=‘C‘;
hanio(i,a,b,c);
}
public static void hanio(int n,char a,char b,char c){
if(n==1)
System.out.println("移动"+n+"号盘子从"+a+"到"+c);
else{
hanio(n-1,a,c,b);//把上面n-1个盘子从a借助b搬到c
System.out.println("移动"+n+"号盘子从"+a+"到"+c);//紧接着直接把n搬动c
hanio(n-1,b,a,c);//再把b上的n-1个盘子借助a搬到c
}
}
}
截图:
以上是关于递归算法的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript - 代码片段,Snippets,Gist
有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]