递归:方法调用自身

public class Study05 {

public static void main(String[] args) {
    /**
     * 递归:方法调用自身
     *
     * /*
     * *1.什么是递归?
     * *  就是方法自身调用自身。
     * *
     * *2.f(int n);
     * *
     * *f(int n){
     * *  f(n-1);//直接调用;
     * *}
     * *
     * *f(int n){
     * *  a(n);//间接调用;
     * *}
     * *
     * *a(int n){
     * * f(n-1);
     * *}
     * *
     * *3.计算5!
     * *5!=5*4!
     * *4!=4*3!
     * *3!=3*2!
     * *2!=2*1!
     * *1!=1;
     * *
     * *public static int factorial(int n){
     * *
     * *      int result=n*factorial(n-1);
     * *
     * *      return result;
     * *}
     * *
     * *4.递归的两个要素:
     * *  1)方法调用自身的规则;
     * *  2)递归的结束条件;如果没有结束条件,会出现栈溢出,java.lang.StackOverflowError。
     * *5.递归的优缺点:
     * *  1)思路简单;
     * *  2)每调用一次方法,就开辟一次栈内存;内存消耗大,影响性能;如果对性能要求高,就避免使用递归。
     * *6.递归的特点:
     * *  1)一个问题可以分解成若干层相同的子问题;
     * *  2)外层问题的解决依赖于内层问题的解决;
     * *  3)每层问题的解决方法时一致的;
     * *  4)要有结束条件。
     * *  5)递归的问题都能用循环解决。
     */
    System.out.println(sum(4));
}

//使用递归的方法求阶乘
public static int sum(int a) {
    int temp = 0;
    if (a == 1) {
        temp = 1;//结束条件
    } else {
        temp = a * sum(a - 1);

    }
    return temp;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值