递归算法

递归算法

  方法定义中调用方法本身的现象。

递归注意实现:

  •     要有出口,否则就是死递归
  •     次数不能太多,否则就内存溢出
  •     构造方法不能递归使用

递归解决问题的思想:

  •     找到出口
  •     找到规律

代码示例:

A.

 1 package com.shanghai.digui;
 2 //用递归算法求5的阶乘,例:1*2*3*4*5=120
3 public class DiguiDemo1 { 4 public static void main(String[] args){ 5 int y=digui(5); 6 System.out.println(y); 7 } 8 9 private static int digui(int i) { 10 if (i==1) { 11 return 1; //当i==1时,此时为出口 12 }else { 13 return i*digui(i-1); //调用自身方法 14 } 15 16 } 17 }

B.

 1 package com.shanghai.digui;
 2 //用递归算法求出斐波那契数列的第十位是多少?
 3 //斐波那契数列 例:1 1 2 3 5 8 13 .......
 4 //从第三个起后一个数字是前两数字之和
 5 public class FeiBoNaChiDemo {
 6     public static void main(String[] args){
 7         int num=fibonachi(10);
 8         System.out.println(num);
 9         
10     }
11 
12     private static int fibonachi(int i) {
13         if (i<3) {     
14             return 1;  //出口
15         }else {
16             return fibonachi(i-1)+fibonachi(i-2);  //调用自身方法
17         }
18          
19     }
20 }

 

posted on 2016-04-23 23:14  西城墨客  阅读(387)  评论(0编辑  收藏  举报

导航