一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称作递归函数。
每个递归定义必须至少有一个条件,满足时递归不再进行,即不再引用自身而是返回值退出。
递归与迭代的区别是,递归用的是循环结构,迭代使用的是选择结构。递归能使程序的结构更清晰、更简洁,更容易让人理解,但是大量的递归调用回建立函数的副本,会耗费大量的时间和内存。迭代则不需要反复调用函数和占用额外的内存。
//例:
public static void main(String []args){
print(3);
}
public static print(int n){
if(n>0){
System.out.print("n");
}
}
使用递归解决斐波那契数列问题:1 1 2 3 5 8 13 21…
class TestFibonacci{
public static void main(String[] args) {
//斐波那契数列: 1 1 2 3 5 8 13 21...
int res=fibonacci(8);
System.out.println(res);
}
public static int fibonacci(int i){
if(i==1||i==2){
return 1;
}
else {
return fibonacci(i-1)+fibonacci(i-2);
}
}
}