【JAVA干货店】带你玩转数组与递归

](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center)

🌈个人主页: Aileen_0v0
🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法
💫个人格言:“没有罗马,那就自己创造罗马~”

递归

自己调用自己

StackOverflowError:栈溢出错误,出现的原因可能是以下情况:
(1)结束条件不对
(2)结束条件没有

public class X {
    //求n的阶乘
    public static int func(int n){
        if(n == 1){
            return 1;
        }else{
            return n * func(n-1);
        }
    }

    public static void main(String[] args) {
        System.out.println(func(5));
    }
}

public class X {
// 通过递归打印每一位数
    public static void fnum(int n){
        if (n < 10) {
            System.out.println(n);
            return;
        }else {
            fnum(n / 10);
            System.out.println( n % 10);

        }

    }

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

}

在这里插入图片描述


利用递归求斐波那契数列

public class X {
    public static  int fib(int n) {
        if (n == 1 || n == 2) {
            return 1;
        }
        int m = fib(n - 1) + fib(n - 2);
        return  m;
    }

    public static void main(String[] args) {
        System.out.println(fib(5));
    }
}
利用递归求斐波那契数列的缺点 会进行大量的重复计算 ,使得计算速度变慢
利用迭代求斐波那契数列
public class X {
    //通过循环方式求斐波那契数列,可避免出现冗余运算
    public static int fib(int n){
        if (n == 2 || n == 1 ){
            return 1;
        }
        int m1 = 1;
        int m2 = 1;
        int cur = 0;
        for(int i=3 ;i <= n; i++){
            cur =m1 + m2;
            m2 = m1;
            m1 = cur;
        }
        return  cur;
    }

    public static void main(String[] args) {
        System.out.println(fib(10));
    }
}

数组入门

数组是最简单的一种数据结构
存放的都是相同数据类型
空间都连在一起
每个空间有自己的编号,起始位置从0开始.

创建数组的三种方式
public class X {
    //直接把数据放进数组,无需初始化
    //写法1:
    int [] array = {1,2,3,4,5};
    //写法2:
    int [] array2 = new int[]{1,2,3,4,5};
    
    //初始化一个含五个变量的空数组
    int [] array3 = new int[5];
  
}

创建数组的注意事项
public class X {

    public static void main(String[] args) {
        //new这个关键字就是用来创建一个空数组
        int[] array;
        array = new int[]{1,2,3,4};

        //中括号当中不能写数字,字符类型用单引号.
        int[] array1 = {1,2,3,4,5};
        char[] chars1 = {'a','b'};

        //布尔类型默认值为false
        boolean[] array2 = new boolean[10];
        System.out.println(array2[9]);

        //引用数据类型的默认值为null
        String[] array3 = new String[10];
        System.out.println("Aileen");
    }

在这里插入图片描述

public class X {

        //局部变量使用时要进行初始化,否则会报错
        int[] array4;
        System.out.println(array4);

    }

在这里插入图片描述
](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center)

](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center)

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aileen_0v0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值