故名思议自己调用自己,我们从简单到复杂、
/**
* 递归
*/
public static void myI(int n) {
if (n < 0) {
return;
} else {
myI(n - 1);
System.out.println(n);
}
}这个是最简单的递归
2,复杂点的就是阶乘 1,1,2,3,5,8,13想这样的
/**
* 递归调用阶乘 1+1+2+3+5+8
*/
public int FibonacciSequence(int n){
if(n==1 || n==2){
return 1;
}else{
int i=FibonacciSequence(n-1)+FibonacciSequence(n-2);
System.out.println(i+"数字");
return FibonacciSequence(n-1)+FibonacciSequence(n-2);
}
}一个正序列,一个反序,为什会出入俩遍一开始我没有懂后来我懂了,是压栈了,
3,加大点难度的汉诺塔问题
/**
*
* @param n 盘子的个数
* @param start 开始的柱子
* @param middle 中介柱子
* @param end 结果的柱子
*/ //5 1 2 3
public static void hanoi(int n,int start,int middle,int end){
if(n<=1){
System.out.println(start+"---->"+end);
}else{ // 1 3 2
hanoi(n-1,start,end,middle);//把第一个上的n-1个移到中间
System.out.println(start+"---->"+end);//把第一个上的一个移到最后
// 2 1 3
hanoi(n-1,middle,start,end);//把中间的n-1个移到最后
}
}这个的好好琢磨琢磨
生活中我们遍历内存卡用到递归。
随时随地看视频