数据结构 - 递归
前段时间跟着尚硅谷的视频学习,自己截图做了一些学习笔记,现在简单整理出来供大家参考,同时也方便自己日后复习查询,如果有存在疏漏,欢迎大家批评指正。文末将会附上视频链接。
什么是递归
- 自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时让代码变得更简洁
递归的调用机制:
-
程序执行到一个方法时,就会开辟一个独立的空间(栈)
-
每个空间栈的数据(局部变量),是独立的,不会相互影响
-
如果方法中使用的是引用类型变量,就会共享该引用类型的数据
-
递归必须向退出递归的条件逼近,否则就是无线递归
-
当方法执行完毕,或遇到return,就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或返回时,该方法也就执行完毕
示意图
代码演示
package com.main.recursion;
public class RecursionTest {
public static void main(String[] args) {
System.out.println("打印问题:");
test(4);
System.out.println("阶乘问题:");
System.out.println(factorial(4));
}
//打印问题
public static void test(int n){
if (n>2){
test(n-1);
}
System.out.println("n="+n);
}
//阶乘问题
public static int factorial(int n){
if (n==1){
return 1;
}else {
return factorial(n-1)*n;
}
}
}
在此附上尚硅谷的教学视频:
【尚硅谷】数据结构与算法(Java数据结构与算法)