文章目录
定义求阶乘1+2+3+4+...+100的和递归必须满足的三个条件循环和递归汉诺塔递归的应用
定义
一个函数自己直接或间接调用自己。
求阶乘
递归思想:n的规模的解决需要借助n-1,n-1规模的解决需要借助n-2…直到到达一个临界点。循环实现 递归实现
1+2+3+4+…+100的和
递归必须满足的三个条件
递归必须要有一个明确的终止条件该函数所处理的数据规模必须在递减这个转化必须是可解的
循环和递归
所有的循环都可以使用递归实现,但不是所有的递归都可以用循环解决。递归:
易于理解速度慢存储空间大 循环:
不易理解速度快存储空间小
汉诺塔
public class Hanoi {
public static void main(String
[] args
) {
move(4,"石柱1","石柱2","石柱3");
}
private static void move(int i
, String from
, String buffer
, String to
) {
if(i
== 1){
System
.out
.println(i
+"from"+from
+"to"+to
);
return;
}
move(i
-1,from
,to
,buffer
);
System
.out
.println(i
+"from"+from
+"to"+to
);
move(i
-1,buffer
,from
,to
);
}
}
递归的应用
树和森林就是以递归的方式定义的树和图的很多算法都是以递归来实现的很多数学公式就是以递归的方式定义的
斐波拉契数列
1 2 3 5 8 13 21 34 …