当前位置 : IT培训网 > Java开发 > Java培训 > 学Java开发这些知识点你一定要掌握

学Java开发这些知识点你一定要掌握

时间:2021-09-08 22:11:24  来源:编程网  作者:IT培训网  已有:名学员访问该课程
java程序员必备的基础知识_java面向对象之方法的递归!学习Java的学子们,赶紧来看看吧,学习需要努力,但也需要掌握知识点!

java程序员必备的基础知识_java面向对象之方法的递归!学习Java的学子们,赶紧来看看吧,学习需要努力,但也需要掌握知识点!

a、方法调用

一个方法中也是可以调用另一个方法的。

我们完全可以把加油和发动分解成两个动作啊,理论上,这也是合 理的,因为这确实是两个动作。

// 发动的方法

public void run(){

addGasoline();

System.out.println("汽车启动啦! ");

}

// 加油的方法

public void addGasoline(){

System.out.println("加油啦! ");

}

b、递归调用

问题来了,方法自己能不能够调用自己的方法

// 发动的方法

public void run(){

run();

System.out.println("汽车启动啦! ");

}

这玩意直接报错了:

Exception in thread "main"

java.lang.StackOverflowError

at com.ydlclass.Car.run(Car.java:16)

at com.ydlclass.Car.run(Car.java:16)

at com.ydlclass.Car.run(Car.java:16)

说是栈内存溢出了:

什么原因呢?每个方法的创建都会创建一个【栈帧】压入栈中。

所以,在使用递归的时候一定要注意,用不好,会发生栈内存溢出 的问题。

那怎么用好递归呢?

答案是:在合适的地方退出递归调用,接下来举两个例子。

①、斐波那切数列

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765 , 10946, 17711, 28657, 46368……

特别指出:第0项是0,第1项是第一个1。

这个数列从第三项开始,每一项都等于前两项之和。

求:在斐波那契数列中第 number个数字是多少?

分析:我们知道 除了第0个和第1个,【第number个数字】一定等 于 【第number-1个数字】和 【第number-2个数字】之和

public long fibonacci(long number) {return fibonacci(number - 1) + fibonacci(number- 2);}

上边这个递归永远退不出去,应该判断number在0和1的时候,它 并不需要递归,修改如下:

public long fibonacci(long number) {if ((number == 0) || (number == 1))return number;elsereturn fibonacci(number - 1) +fibonacci(number - 2);}Test test = new Test();long result = test.fibonacci(5);System.out.println(result);结果:5

【注意】:递归,一定要有合理的退出机制。

②、阶乘(factorial)

5的阶乘 = 5*4*3*2*1 = 120

非递归方式:

public long factorial(long number) { long result = 1;for (int i = 1; i <= number ; i++) {result *= i;}return result;}

递归方式:

核心思路: 5的阶乘 = 4的阶乘 * 5 = 3的阶乘 * 4 * 5 = 2的阶乘 * 3 * 4 * 5 = 1 * 2 * 3 * 4 *5;

public long factorial(long number) { if (number <= 1)return 1;return number * factorial(number - 1);}

顶一下
(0)
0%
踩一下
(0)
0%

IT培训0元试听 每期开班座位有限.0元试听抢座开始! IT培训0元试听

  • 姓名 : *
  • 电话 : *
  • QQ : *
  • 留言 :
  • 验证码 : 看不清?点击更换请输入正确的验证码

在线咨询在线咨询

温馨提示 : 请保持手机畅通,咨询老师为您
提供专属一对一报名服务。

------分隔线----------------------------
------分隔线----------------------------

推荐内容