递归算法
递归函数就是一个函数直接或间接的调用自己本身。递归算法是把一个问题转化成很多个相似的问题,然后递归调用函数来表示问题的解。
解决问题的特点
- 递归就是在过程或函数里调用了自身
- 在使用递归时,必须有递归的结束条件
- 使用递归算法解题通常相对简洁,但效率较低
- 在解题中,递归次数(调用自身)过多容易造成栈溢出,导致结果错误
算法要求
- 每次调用在规模上都有所缩小
- 相邻两次重复之间有着紧密的联系,前一次要为后一次做准备(前一次的输出作为后一次的输入)//(题外话:好像有一丝循环的味道(~ ̄▽ ̄)~)
- 每次递归调用都要有条件,没有条件的递归调用将会成为死循环而不能正常结束,在问题的规模极小时,必须用直接给出解答,而不再进行递归调用。
示例
1. 斐波那契数列的第N项的值
斐波那契数列的定义:
f(0)=0,f(1)=1
对于n>1时,有f(n)=f(n-1)+f(n-2)
0,1,1,2,3,5,8,13,21,34,55…
public static void main(String[] args) {
System.out.println(fibonacci(9))