Java数据结构与算法6——递归

1.什么是递归

什么是递归递归就是函数(方法)不断调用自身,直至求出结果的算法。

其思路是把一个大问题转化为规模缩小了的子问题,通过解决小问题来解决最终的大问题。

2.阶乘

3.理解递归:调用顺序、和循环的关系

1)递归的运行顺序
2)递归和循环,把前面用循环实现的二分法查找,用递归来实现

4.理解分治算法

基本思想是将一个大的问题分解为N个较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。

5.斐波那契数列

斐波那契数列,又称黄金分割数列,形如:0, 1, 1, 2, 3, 5, 8, 13......
1)第0项是0,第1项是第一个1
2)从第二项开始,每一项都等于前两项之和

6.汉诺塔(河内塔)问题

在ABC三根柱子上,有n个圆形盘以从下到上、从大到小的次序叠置在A塔上。现要将A塔上的所有圆形盘,借助B搭,全部移动到C塔上。且仍按照原来的次序叠置。移动的规则如下:
1)这些圆形盘只能在3个塔问进行移动
2)一次只能移动一个盘子
3)任何时候都不允许将较大的盘子压在比它小的盘子的上面

7.背包问题

背包问题背包问题是一种组合优化的问题,一种简化形式如下:给定一组物品,重量各不相同,如何从中选择物品放入背包中,以使背包重量达到指定的重量。

8.归并排序

归并排序思路:采用分治的思想,把数据序列分成两个子序列,排序每一半,然后再把排好序的两个子序列合并成为一个有序的序列。

归并排序的效率:归并排序的时间是O(N*logN),主要是复制和比较花费时间

参考

  • 1)Java数据结构和算法精讲版

你可能感兴趣的:(Java数据结构与算法6——递归)