面向对象入门3(递归方法)
方法中的调用自身——
“打开一扇通往自家房间的门,房间里还有一扇同样通往自家房间的门”
本质上是一个隐藏的循环;
Alert:要避免无限递归,一定要在能出现某些情况下,不再调用方法自身
简例1:
public class Recursive {
public void test(){
System.out.println("Dating");
test();
}
public static void main(String[] args) {
Recursive a=new Recursive();
a.test();
}
}
Alert:要避免无限递归,一定要在能出现某些情况下,不再调用方法自身
例1改
public class Recursive {
public int i;
public void test(){
i++;
if(i<=5) {
System.out.println("Dating"+i);
test();
}
}
public static void main(String[] args) {
Recursive a=new Recursive();
a.test();
}
}
/*
Dating1
Dating2
Dating3
Dating4
Dating5
*/
实例1:
存在函数
f(n)=f(n+2)-2*f(n+1) , f(1)=3 ,
求f(10)
Slu: 令 N = n+2
f(N) = f(N-2) + 2*f(N-1)
public class Function {
public static int fu(int a)
{
if(a==1)
{
return 2;
}
else if (a==2)
{
return 5;
}
else
{
return fu(a-2)-2*fu(a-1);
}
}
public static void main(String[] args) {
System.out.println(Function.fu(10));
}
}
/*
5741
*/
再次声明:必须要保证递归结束的条件