重学Java 14.面向对象.2.递归

明知不可为而为之

                ——24.2.13

一、递归的介绍和基本使用

1.概述:方法内部自己调用自己

2.分类:

        a、直接递归

                public static void method(){

                        method()

                }

        

        b、简介递归

                A(){

                        B()

                        }

                B(){

                        C()

                        }

                C(){

                        A()

                        }

3.注意:

        a、递归必须要有出口,否则会出现”栈内存溢出“

        b、递归即使有出口,递归次数不要太多

    public static void main(String[] args) {
        method();
    }

    public static void method(){
        method();
    }

重学Java 14.面向对象.2.递归_第1张图片

二、递归的练习

1.递归练习1_输出9到1

public class Demo92Recursion02Practice1 {
    public static void main(String[] args) {
        method(9);
    }
    public static void method(int n){
        System.out.print(n+" ");
        n--;
        if(n>0){
            method(n);
        }
    }

重学Java 14.面向对象.2.递归_第2张图片

2.递归练习2_求n的阶乘

    public static void main(String[] args) {
        int math;
        System.out.println("请您输入您想计算的数字");
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        math = JCmath(n);
        System.out.println("math = "+ math);
    }

    public static int JCmath(int n){
        int sum = 1;
        for (int i = n; i > 0; i--) {
            sum *= n;
            n--;
        }
        return sum;
    }

重学Java 14.面向对象.2.递归_第3张图片

3.递归练习3_斐波那契数列的第n个值

    public static void main(String[] args) {
        System.out.println("请您输入一个数:");
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int num = Fab(n);
        System.out.println("斐波那契的第"+n+"项为"+num);
    }

    public static int Fab(int n){
        int fib = 0;
        if(n==1||n==2){
            return 1;
        }
        fib = Fab(n-1)+Fab((n-2));
        return fib;
    }

重学Java 14.面向对象.2.递归_第4张图片

你可能感兴趣的:(Java从0到1,java,开发语言)