Java方法之递归思想

学习Demo

 

递归【基于栈】:A方法调用A方法(自己调用自己)

递归结构包括两部分:

1. 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。

2. 递归体:什么时候需要调用自身方法。

注:适用于计算量小的情况 耗时 影响性能

 

 

码上行动

  

package TestDemo;

/**
 * 递归【基于栈】:A方法调用A方法(自己调用自己)
 * 递归结构包括两部分:
 * 1. 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
 * 2. 递归体:什么时候需要调用自身方法。
 * 实例:阶乘的计算【适用于计算量小的情况】耗时 影响性能
 */
public class Test4 {

    /*
    阶乘:n!=1×2×3×...×(n-1)×n
    阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
        1! 1
        2! 2*1
        3! 3*2*1
        5! 5*4*3*2*1
        0的阶乘是1,1的阶乘是1本身
     */
    public static void main(String[] args) {
        System.out.println(f(5));
    }

    /*
        递归思想
        2!      2 * f(1)    2 * 1
        3!      3 * f(2)    3 * 2 * f(1)    3 * 2 * 1
     */
    public static int f(int n){
        if (n == 1) {
            return 1;
        }else{
            return n * f(n-1);
        }
    }

}

 

posted @ 2020-09-18 15:42  无明之辈  阅读(160)  评论(0编辑  收藏  举报