算法--方法递归
Posted LinkinPark8林肯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法--方法递归相关的知识,希望对你有一定的参考价值。
方法递归:一个方法体内调用它本身,被称为方法递归。英语是recursive,[rɪˈkɜ:sɪv]。
方法递归包含了一种隐式的循环,它会重复执行某种代码,但这种重复执行无须循环控制。
递归有一条最重要的规定:递归一定要向已知方法递归,否则就是一个死循环。
递归是非常有用的,例如希望遍历某个路径下的所有文件,但这个路径下文件夹的深度是未知的,那么就可以使用递归来实现这个需求。系统可定义一个方法,该方法接受一个
文件路径作为参数,该方法可遍历当前路径下的所有文件和文件路径,该方法中再次调用该方法本身来处理该路径下的所有文件路径。
为了更好的记住递归的规定,下面是2个数学题:
1,已知有一个数列:f(0)=1,f(1)=2,f(n+2)=2*f(n+1)+f(n),其中n是大于0的整数,求f(10)的值;
2,已知有一个数列:f(20)=1,f(21)=2,f(n+2)=2*f(n+1)+f(n),其中n是大于0的整数,求f(10)的值;
/**
* 递归方法测试:
* 只要一个方法的方法体内再次调用了方法本身,这就是一个递归方法
* 递归一定要向已知方法递归,否则就是一个死循环
*
* @author LinkinPark
*
*/
public class RecursiveTest
public static int test(int n)
if (n == 0)
return 1;
else if (n == 1)
return 2;
else
return 2 * test(n - 1) + test(n - 2);
public static int test1(int n)
if (n == 20)
return 1;
else if (n == 21)
return 2;
else
// 不可以和上面写成一样,递归一定要向已知的方法递归
return test(n + 2) - 2 * test(n + 1);
public static void main(String[] args)
// 循环的次数一样,初始值一样,所以最终2次输出结果相同:5741
System.out.println(test(10));
System.out.println(test1(10));
以上是关于算法--方法递归的主要内容,如果未能解决你的问题,请参考以下文章