A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© Kevin.Kang 高级黑马   /  2015-7-24 10:01  /  363 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package com.kxg;

  2. /*
  3. * 递归:方法定义中调用本身方法
  4. *
  5. * 注意:
  6. *                 1.递归一定要有出口,否则就是死递归
  7. *                 2.递归次数不能太对,否则就内存溢出
  8. *                 3.构造方法不能使用递归
  9. *
  10. * 需求:递归实现5的阶乘
  11. *                 5! = 5*4*3*2*1
  12. *                 5! = 5*4!
  13. */
  14. public class DiGuiDemo {
  15.         public static void main(String[] args) {
  16.                 // 循环实现
  17.                 int i = 1;
  18.                 for (int x = 2; x <= 5; x++) {
  19.                         i *= x;
  20.                 }
  21.                 System.out.println(i);

  22.                 // 递归实现
  23.                 System.out.println(JieCheng(5));
  24.         }

  25.         // 递归需要写一个方法:
  26.         // 返回值类型:int 参数列表:int i
  27.         // 出口条件: if(i == 1){ return 1;}

  28.         private static int JieCheng(int i) {
  29.                 if (i == 1) {
  30.                         return 1;
  31.                 } else {
  32.                         return i * JieCheng(i - 1);
  33.                 }
  34.         }
  35. }
复制代码


1 个回复

正序浏览
本帖最后由 Kevin.Kang 于 2015-7-24 11:27 编辑

斐波那契数列问题:
  1. package com.kxg;

  2. import java.util.Scanner;

  3. /*
  4. * 斐波那契数列:
  5. *                 1,1,2,3,5,8,13,21...
  6. * 需求:求第n项的数字
  7. */
  8. public class TuZiDemo {
  9.         public static void main(String[] args) {
  10.                 Scanner sc = new Scanner(System.in);
  11.                 System.out.println("你想查第几项:");
  12.                 int num = sc.nextInt();

  13.                 // 定义一个数组存储斐波那契数列
  14.                 int[] arr = new int[num];

  15.                 // 已知0和1索引的值为1
  16.                 arr[0] = 1;
  17.                 arr[1] = 1;

  18.                 // 循环得到所有索引的值,并存储起来
  19.                 for (int x = 2; x < arr.length; x++) {
  20.                         arr[x] = arr[x - 1] + arr[x - 2];
  21.                 }

  22.                 // 所求n项在数组中为n-1项
  23.                 System.out.println("数组实现:" + arr[num - 1]);

  24.                 System.out.println("递归实现:" + ShenTu(num));
  25.         }

  26.         private static int ShenTu(int i) {
  27.                 if (i == 1 || i == 2) {
  28.                         return 1;
  29.                 } else {
  30.                         return ShenTu(i - 1) + ShenTu(i - 2);
  31.                 }
  32.         }
  33. }
复制代码



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马