递归:在一个方法的内部,对自身进行调用,又叫递归调用
循环和递归都要具有三部分:初始值,终止条件,前进步长
递归和迭代是等价的
常见的问题:累加加和(累乘乘积),汉诺塔,斐波那契数列
publicclassRecuresion_06{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
System.out.PRintln(factorial(10));
System.out.println("!!!!!!!!!!!!!!!!!!!");
System.out.println(fibonacci(10));
System.out.println("!!!!!!!!!!!!!!!!!!!");
System.out.println(fibIteration(5));
}
//阶乘:factorial
publicstaticintfactorial(intn){
if(n==1){
return1;
}else{
System.out.print(n+"*"+(n-1)+",");
returnn*factorial(n-1);
}
}
//斐波那契数列
publicstaticintfibonacci(intn){
if(n==1||n==2){
return1;
}else{
System.out.print((n-1)+"+"+(n-2)+",");
returnfibonacci(n-1)+fibonacci(n-2);
}
}
//斐波那契数列,迭代实现;iteration
publicstaticlongfibIteration(intindex){
if(index==1||index==2){
return1;
}
longf1=1l;
longf2=1l;
longf=0;
for(inti=0;i<index-2;i++){
f=f1+f2;
f1=f2;
f2=f;
System.out.print(f2+"+"+f1+",");
}
returnf;
}
}
新闻热点
疑难解答