java学习之路--递归
2016-05-29 19:51
459 查看
/** * 概念介绍: * 递归是一种方法(函数)调用自已编程技术。 * 递归就是程序设计中的数学归纳法。 * 例如:tri(n)=1 if n=1 * tri(n)=n+tri(n-1) if n>1 * 可能while循环方法执行的速度比递归方法快,但是为什么采用递归呢。 * 采用递归,是因为它从概念上简化了问题,而不是因为它提高效率。 */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Recursion {//求三角数字的递归算法:1,3,6,10,15,21, ...... static int theNumber; public static void main(String[] args) throws IOException { System.out.print("Enter a number: "); theNumber = getInt(); //使用递归时调用,默认 int theAnswer = triangle(theNumber); //使用非递归时调用 //int theAnswer=triangle2(theNumber); System.out.println("Result: " + theAnswer); } public static int triangle(int n) {//递归方法,循环调用 if (n == 1) { return 1; } else { return (n + triangle(n - 1)); } } public static int triangle2(int n) {//非递归方法 int total = 0; while (n > 0) { total = total + n--; } return total; } public static String getString() throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String s = br.readLine(); return s; } public static int getInt() throws IOException { String s = getString(); return Integer.parseInt(s); } } /** * 运行结果: * Enter a number: * 3 * Result: 6 */ /** * 总结: * 使用非递归的方式更简洁,更易懂,运行效率更高,为什么还要用递归的算法呢。 * 递归使规模逐渐降低的方式解决问题,以这种统一的方式解决足够复杂的问题。 */
相关文章推荐
- Java大数类
- Spring in action 02 -- 装配 Bean(JavaConfig)遇到的问题
- 《java入门第一季》之集合toString源码解析
- 《java入门第一季》之集合toString源码解析
- 【JAVA】JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置详解
- 《java入门第一季》之有趣的集合小案例---获取10个【1-20之间】的随机数,要求不能重复。
- 《java入门第一季》之有趣的集合小案例---获取10个【1-20之间】的随机数,要求不能重复。
- Java注解
- JAVA内部类使用,什么时候该使用内部类及使用内部类的好处
- Java中为什么要使用内部类
- Java内部类的作用
- Java内部类的使用小结
- 【Java】常用二叉树考点
- HBase总结(十一)hbase Java API 介绍及使用示例
- Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)
- Java compiler level does not match the version of the installed Java project facet.
- 深入理解Java:SimpleDateFormat安全的时间格式化
- JAVA面向对象基础 对象 类 方法学习笔记
- OAuth 2 开发人员指南(Spring security oauth2)
- JAVA 数组的排序方法冒泡、选择、快速、数组递增