您的位置:首页 > 其它

算法--方法递归

2016-05-16 10:47 281 查看
方法递归:一个方法体内调用它本身,被称为方法递归。英语是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));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: