1.
英 [riˈkəːʒən]
美 [rɪˈkɝʒən]
n.递回;递回式;循环
循环和递归是同一个单词,本质上他们都一样
测试demo:
@Test
public void RecursionTest() {
List list = new ArrayList();
Boss boss = new Boss();
boss.setName("慕容皝1");
boss.setAge(28);
Boss boss2 = new Boss();
boss2.setName("慕容皝2");
boss2.setAge(28);
list.add(boss);
list.add(boss2);
Recursion recursion = new Recursion();
recursion.setBossList(list);
// 遍历列表
recursion.proceed();
}
package com.example.demo.entity;
import java.util.List;
public class Recursion {
// 要遍历的boss 列表
List<Boss> bossList ;
// 遍历的下标,每遍历一次,下标移动一下
int currentIndex = 0 ;
public void proceed() {
// 最后一个元素结束递归
if (this.currentIndex == this.bossList.size() - 1) {
System.out.println(bossList.get(currentIndex).toString());
return ;
}
Boss boss = this.bossList.get(this.currentIndex);
// 不是最后一个元素,则递归调用 proceed() 方法,打印元素
if (this.currentIndex <= this.bossList.size() - 2) {
System.out.println(boss.toString());
this.currentIndex++;
proceed();
}
}
public List<Boss> getBossList() {
return bossList;
}
public void setBossList(List<Boss> bossList) {
this.bossList = bossList;
}
}
实体类:
package com.example.demo.entity;
import java.util.Objects;
/**
* @program: springboot_01
* @description:
* @author: guoyiguang
* @create: 2021-01-10 15:21
**/
public class Boss {
private String name;
private Integer age;
public Boss() {
}
public Boss(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Boss{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Boss boss = (Boss) o;
return Objects.equals(name, boss.name) &&
Objects.equals(age, boss.age);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}