目录
1、什么是递归
递归是一种争对使用简单的循环难以编程实现的问题,提供优雅解决方案的技术。
使用递归就是使用递归方法(recursive method)编程,递归方法就是直接或者间接调用自身的方法。递归是一个很有用的程序设计技术。在某些情况下,对于用其它方法很难解决的问题,使用递归就可以给出一个直观、直接的简单解法。例如需要遍历某个路径下的所有文件,但这个路径下文件夹的深度是未知的,那么就可以使用递归来实现这个需求。
2、number的阶乘
public class Factorial {
/**
* 采用循环number的阶乘
* @param number number
* @return 阶乘结果
*/
public static long factorial(int number) {
long ret = 1;
for(int i = number; i >= 1; i--)
ret *= i;
return ret;
}
public static long factorial2(int number) {
if(number == 0) return 1;//基础情况(终止条件)
else return number * factorial2(number - 1);
}
public static void main(String[] args) {
System.out.println(factorial(5));
System.out.println(factorial2(5));
int index = 10;
for(int i = 0; i <= index; i++) {
System.out.print(fib(i) + " ");
}
}
public static int fib(int index) {
if(index == 0) return 0;
if(index == 1) return 1;
return fib(index - 1) + fib(index - 2);
}
}
3、判断字符串是否为回文串
public class RecursivePalindrome {
/**
* 判断字符串token是否为回文字符串
*/
public static boolean isPalindrome(String token) {
return isPalindrome(token,0,token.length() - 1);
}
/**
* 递归辅助方法
* @param token
* @param low
* @param high
* @return
*/
private static boolean isPalindrome(String token,int low,int high) {
if(low >= high)
return true;
else if(token.charAt(low) != token.charAt(high))
return false;
else return isPalindrome(token,low + 1, high - 1);
}
public static void main(String[] args) {
}
}