1. /**
    2. * 递归方法练习
    3. *
    4. * 递归方法: 一个方法体内调用他自身
    5. * 1 方法递归包含了一种隐式的循环,他会重复执行某段代码,但这种重复执行无需循环控制
    6. * 2 递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似于死循环
    7. */
    8. public class Recursion {
    9. public static void main(String[] args) {
    10. int sum = 0;
    11. // for循环求1-100自然数的和
    12. for (int i = 1; i <= 100; i++) {
    13. sum+=i;
    14. }
    15. System.out.println("sum = " + sum);
    16. // 递归方法求1-100自然数的和
    17. Recursion recursion = new Recursion();
    18. int recursionSum = recursion.getSum(100);
    19. System.out.println("recursionSum = " + recursionSum);
    20. // 已知数列 f(0) = 1 f(1) = 4 f(n+2) = 2*f(n+1) + f(n) 求f(10)
    21. int f = recursion.f(3);
    22. System.out.println("f = " + f);
    23. }
    24. /**
    25. * 求f(10)
    26. * @param n
    27. * @return
    28. */
    29. public int f(int n) {
    30. if (n == 0 ) {
    31. return 1;
    32. } else if (n == 1){
    33. return 4;
    34. } else {
    35. return 2 * f(n - 1) + f(n - 2);
    36. }
    37. }
    38. /**
    39. * 使用递归方法
    40. * 求从n到1的和
    41. * @param n
    42. * @return
    43. */
    44. public int getSum(int n) {
    45. if (n == 1) {
    46. return 1;
    47. } else {
    48. return n + getSum(n - 1);
    49. }
    50. }
    51. }