郑州百知IT培训机构

试听课 + 活动课
填写信息优先获取试听课

位置:学校首页 > 学校动态>郑州软件开发java培训学校一览表

郑州软件开发java培训学校一览表

  郑州软件开发java培训学校一览表,郑州百知IT设计培训费用价格适中,物有所值,专注培养设计实战型人才,基础入门学得会!

  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);}

领取试听课
温馨提示:为不影响您的学业,来校区前请先电话或QQ咨询,方便我校安排相关的专业老师为您解答
版权所有:搜学搜课(www.soxsok.com) 技术支持:搜学搜课网