最近在一些大牛那学了树相关的递归算法,记录一下。以便以后回顾。
1、何为递归
递归就是循环定义,对于一个方法来说,就是自己调用自己。当一个问题的解决方案是重复的执行某个步骤,直到问题得到解决时。这时候你就想想,是不是该用递归去解决了。它能用几行简单的代码去解决复杂的问题。
2、递归要点
当你选择使用递归时,就必须考虑到以下几个点,也是你写代码时必须遵循的要点(后续代码会按照以下步骤去解决):
1、递归的终止条件。这是写递归的必要条件,如果没有终止条件,递归就无法结束,也就没有意义去使用递归。
2、循环重复处理得逻辑。这也是你使用递归首先要考虑得,该问题是否是通过循环处理就可以得到解决。若是可以,它每次重复处理得内容是什么。
3、返回值。每次递归需要返回一个值给上层或下层。给上下层使用。需要考虑他们需要得返回值是什么。
那么如何得出这三要点呢。举例说明。比如,让你计算1到100的和。采用递归方法代码:
public class test {
public static int add(int num,int i) {
//终止条件
if(i > 100) {
return num;
}
//本层逻辑内容
num = num + i;
i = i + 1;
//返回值
return add(num,i);
}
public static void main(String args[]) {
int sum= add(0,1);
System.out.println(sum);
}
}
首先,考虑第一个要点,什么时候终止,1加到100。肯定到i >100得时候。就不需要继续了,100为终止条件。第二个要点。循环得处理逻辑是什么。每一层需要干什么。需要将以前的值都加上.i是从1到100得。i逐层加1 .所以需要num=num+1;i = i+1;第三个要点,下层需要什么。需要这一层得和。告诉下一层,我已经加到第4层了(1+2+3+