大家好!!!算法菜鸟,学习笔记一篇,有错误恳请指正!!!
基本定义
简单介绍我对递归的理解,它就是像是我们数学所说的数学归纳法,如在题目中,找到规律,找到重复的规律。有时你会神奇的发现,一行代码就可以解决你写五六行的代码。
如这个求阶乘:
- public static int factorial(int n) {
if (n == 1) {
return 1;
}
return n*factorial(n-1);
}
然后调用方法factorial(n),这样就实现了递归。
这里说一下大家可以注意这些英文表达,记忆一下,对以后做工业设计非常有用。(听我老师说的)
我们可以从中发现一些方法
找重复:找到规律
找变化:变化的量作为参数
找边界 出口
找到边界可以说最为重要,递归调用运用了数据结构-栈,一旦边界找不,就栈会溢出,如
- public static int f(int n) {
return f(n);
}
这里可以说下递归的过程,如果这时候输入n = 10;
他会先从f(10)-f(9)…f(0),这就是递归;但是这里没有写边界,就会导致一直进行循环,无穷无尽,用数学语言来说,到-∞
好了,今天先简要介绍到这里!明天继续!!!