递归的定义
- 在高级语言中,函数调用自己和调用其他函数并没有本质的不同。我们把一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称作递归函数。
- 不过,写递归程序最怕的就是陷入永不结束的无穷递归中。切记,每个递归定义必须至少有一个条件,当满足这个条件时递归不再进行,即函数不再调用自身而是返回。
- 迭代和递归的区别是:迭代使用的是循环结构,递归使用的是选择结构。
- 使用递归能使程序的结构更请晰、更简洁、更容易让人理解,从而减少读懂代码的时间。
- 但大量的递归调用会建立函数的副本,会消耗大量的时间和内存,而迭代则不需要此种付出。递归函数分为调用和回退阶段,递归的回退顺序是它调用顺序的逆序。
举个例子,计算n的阶乘 n!
用数学知识找到了阶乘的规律,就可以使用递归,快速解决问题
代码如下:
package com.lbl;
public class n的阶乘 {
public static void main(String[] args) {
int sum = fun(4);
System.out.println(sum);
}
public static int fun(int n){
if(n==0){
return 1;
}
return n*fun(n-1);
}
}
运行结果: