1.斐波那契数列

package com.luna.base;
public class BirthRabbit {public static void main(String[] args) {int i = 1;for (i = 1; i <= 20; i++) {System.out.println("兔子第" + i + "个月的总数为:" + f(i));}}public static int f(int x) {if (x == 1 || x == 2) {return 1;} else {return f(x - 1) + f(x - 2);}}
}

2.从1到100相加

package com.luna.base;
public class Plus {public int sum(int i) {if (i == 1) {return 1;}return i + sum(i - 1);}public static void main(String[] args) {Plus plus = new Plus();System.out.println("计算结果:" + plus.sum(100) + "!");}
}

3.100的阶乘

package com.luna.base;
import java.math.BigInteger;
public class LoopMutiply {public BigInteger sum(int i) {if (i == 1) {return BigInteger.ONE;}return BigInteger.valueOf(i).multiply(sum(i - 1));}public static void main(String[] args) {LoopMutiply test = new LoopMutiply();try {System.out.println("计算结果:" + test.sum(50) + "!");} catch (Exception e) {e.printStackTrace();}}
}

4.有序数组a、b合并成一个新的有序数组

package com.luna.base;
public class ArraySort {public static void main(String[] args) {int[] a = { 1, 3, 4 };int[] b = { 2, 3, 5, 6 };int[] c = mergeArray(a, b);for (int n : c) {System.out.print(n + " ");}}// 合并数组public static int[] mergeArray(int[] a, int[] b) {int result[] = new int[a.length + b.length];if (checkSort(a) && checkSort(b)) {// 说明ab数组都是有序的数组// 定义两个游标int i = 0, j = 0, k = 0;while (i < a.length && j < b.length) {if (a[i] <= b[j]) {result[k++] = a[i++];} else {result[k++] = b[j++];}}while (i < a.length) {// 说明a数组还有剩余result[k++] = a[i++];}while (j < b.length) {result[k++] = b[j++];}}return result;}// 检查一个数组是否是有序1 2 3public static boolean checkSort(int[] a) {boolean flag = false;// 默认不是有序的for (int i = 0; i < a.length - 1; i++) {if (a[i] > a[i + 1]) {// 说明不是有序的flag = false;break;} else {flag = true;}}return flag;}
}

5.归并排序算法实现

package com.luna.base;
public class MergingSort {    public static void sort(int[] data, int left, int right) {    if (left < right) {    // 首先找出中间的索引    int center = (left + right) / 2;    // 对中间索引左边的数组进行递归    sort(data, left, center);    // 对中间索引右边的数组进行递归    sort(data, center + 1, right);    // 合并    merge(data, left, center, right);    }    }    public static void merge(int[] data, int left, int center, int right) {    int[] tmpArr = new int[data.length];        int mid = center + 1;      // third记录中间数组的索引    int third = left;    int tmp = left;        while (left <= center && mid <= right) {    // 将两个数组中取出最小的数放入中间数组    if (data[left] <= data[mid]) {    tmpArr[third++] = data[left++];    } else {    tmpArr[third++] = data[mid++];    }    }    // 剩余部分依次放入中间数组    while (mid <= right) {    tmpArr[third++] = data[mid++];    }       while (left <= center) {    tmpArr[third++] = data[left++];    }                while(tmp <= right){    data[tmp] = tmpArr[tmp++];    }    }    public static void main(String[] args) {    int[] a = { 3, 2, 5, 4 };               sort(a, 0, a.length - 1);        for (int i = 0; i < a.length; i++) {    System.out.print(a[i] + " ");    }    }
}    
        更多排序算法的实现,请进传送门→

原文地址:https://blog.csdn.net/u011635492/article/details/80715832

Java经典递归算法相关推荐

  1. JAVA经典算法50题(转)

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/51097928 JAVA经典算法50题 [程序1]   题目:古典问题:有一对兔子, ...

  2. java经典算法四十题

    java经典算法四十题 [程序9]题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 ".例如6=1+2+3.编程找出1000以内的所有完数. public class W ...

  3. java经典50题_JAVA经典算法50题(3)【面试+工作】

    原标题:JAVA经典算法50题(3)[面试+工作] JAVA经典算法50题(3)[面试+工作] [程序21] 题目:求1+2!+3!+...+20!的和. 1.程序分析:此程序只是把累加变成了累乘. ...

  4. Java经典面试题整理及答案详解(八)

    简介: Java经典面试题第八节来啦!本节面试题包含了进程.线程.Object类.虚拟内存等相关内容,希望大家多多练习,早日拿下心仪offer- 了解更多: Java经典面试题整理及答案详解(一) J ...

  5. Java经典面试题整理及答案详解(五)

    Java经典面试题第五弹来啦!本节面试题主要是针对Java初级基础提问,看看你还记得多少? 1.String str="hello",这个字符串对象在栈内存中明明有一个引用(str ...

  6. Java经典面试题整理及答案详解(四)

    简介: Java经典面试题第四弹来啦!本节小编整理了关于Java开发框架常见的面试题,希望大家多多怜惜,一起进步- 1.SpringMVC返回值,使用SpringMVC的时候我看到两种风格的开发,一种 ...

  7. Java经典面试题整理及答案详解(三)

    简介: 以下是某同学面试时,面试官问到的问题,关于面试题答案可以参考以下内容- 上一篇:Java经典面试题整理及答案详解(二) Java面试真题第三弹接住!相信通过前两节的学习,大家对于Java多少有 ...

  8. java经典100例算法题_10道java经典算法题,每一题都能帮你提升java水平!

    JAVA经典算法题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子 ...

  9. java由大到小输出整数xvz_【视频+图文】Java经典基础练习题(三):输入3个整数,并将其由小到大输出...

    java经典实例书店书畅想畅销书 109.6元 包邮 (需用券) 去购买 > 目录https://www.cnblogs.com/Qpgshare/p/12588923.html一.视频讲解 h ...

  10. java面试题_阿里大厂流出的数百道 Java 经典面试题

    BAT 常问的 Java基础39道常见面试题 1.八种基本数据类型的大小,以及他们的封装类 2.引用数据类型 3.Switch能否用string做参数 4.equals与==的区别 5.自动装箱,常量 ...

最新文章

  1. Redis + Tomcat + Nginx 集群实现 Session 共享
  2. 区块链教程Fabric1.0源代码分析Tx(Transaction 交易)二
  3. 50句看后可以变换心情豁然开朗的话
  4. [leetcode]145.二叉树的后序遍历
  5. eclipse-jee版连接tomcat(转载)
  6. 新后缀再开放,投资者应谨慎对待!
  7. 力扣(LeetCode)292. Nim游戏 巴什博奕
  8. 计算机概论在线阅读,计算器概论 or 计算机概论
  9. VMware里Ubuntu-14.04-desktop的VMware Tools安装图文详解
  10. OPPO Find X5/Pro搭载一体化流线设计,采用双芯片战略
  11. 在ionic2中集成swiper插件
  12. 解读《美国国家BIM标准》– BIM能力成熟度模型(十一)
  13. 阿贝尔分部求和法的应用(二)
  14. 三国演义人名爬取与处理
  15. 自己动手写CPU之第九阶段(2)——加载存储指令说明2(lwl、lwr)
  16. 我与CSDN的2021 --从路人到一名万粉博主的自述
  17. 致刚就业迷茫的你和寄语大学毕业生--技术读者
  18. python web微信应用(三) 微信智能聊天机器人
  19. TabbedProperties实现
  20. iOS 6:动态下载字体

热门文章

  1. 我要自学网access教程百度云_我要自学网教程资源汇总
  2. 大数据Hadoop生态圈
  3. 扶贫计算机考试试题,计算机基础知识试题1.doc
  4. NFine极速WEB + ORM框架源码
  5. 普元EOS开发积累第二篇(常见错误解决方法) 持续更新
  6. 现在出纳记账手写还是用计算机,请问:出纳现金日记账和银行日记账是否一定要用手写归档能否用电脑打印归档?...
  7. VS 2022 SVN 插件
  8. c语言 电脑 控制串口,PC与单片机RS-232串口的通讯和控制
  9. CentOS安装网络驱动
  10. Vue + OpenLayers 配置多个地图数据源