java基础---------递归和循环的使用效率

package java基础;

/** * 参数递归和迭代的效率,递归效率太低,如果用到递归一般使用循环 */

public class TestRecursion {    public static void main(String[] args) {     //标记递归方法开始执行事件        long d1=System.currentTimeMillis();        System.out.printf("%d阶乘结果:%s%n",10,factorial(10));      //递归程序结束时间         long d2=System.currentTimeMillis();         System.out.printf("递归耗时:%s%n",d2-d1);//计算出递归使用的时间         factorialLoop(10);    }

    //计算阶乘方法,递归就是方法自己调用自己    static long factorial(int a){

        if(a==1){            return 1;        }        else {        return a*factorial(a-1);        }    }    //高性能一般使用循环,递归效率太低    static long factorialLoop(int b){        long d3=System.currentTimeMillis();        long result=1;        while (b>1){            result*=b*(b-1);            b=b-2;        }        long d4=System.currentTimeMillis();        System.out.println("循环阶乘结果"+result);        System.out.printf("递归耗时:%s%n",d4-d3);        return result;

    }}

执行结果:

10阶乘结果:3628800
递归耗时:25
循环阶乘结果3628800
递归耗时:0



原文地址:https://www.cnblogs.com/zzzao/p/10888102.html

时间: 2024-10-19 13:44:10

java基础---------递归和循环的使用效率的相关文章

黑马程序员----java基础---递归概述、递归和循环的区别

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.递归函数,通俗的说就是函数本身自己调用自己... 如:n!=n(n-1)! 你定义函数f(n)=nf(n-1) 而f(n-1)又是这个定义的函数..这就是递归 定义:程序调用自身的编程技巧称为递归( recursion). 递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小

黑马程序员——java基础——选择、循环

-----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 今天回顾了一下JAVA学习中的选择语句,循环语句,和数组,在JAVA中的选择语句和C语言中差不多有if.switch一个if语句由一个后跟到一到多个语句的布尔表达式组成.顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. Java中有三种主要的循环结构: while循环 do…while循环 for循环 for循环的用法 先来说说哦For循环

04、Java基础语法(循环嵌套、break、continue、方法、方法的重载、数组动态初始化)

复习: 流程控制语句 - 顺序结构 - 分支结构 - if-else - switch - 循环结构 - for - while - do...while 1.循环嵌套 2.控制循环的语句 3.方法 4.方法的重载 5.数组的动态初始化 1.循环嵌套 ctrl + alt + L 格式化代码 "\n"换行符 "\t"制表符 九九乘法表 for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++)

黑马程序员——Java基础---递归

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流!                                                                       递归 Java支持递归. 递归是根据自身定义内容的过程.就java编程而言,递归是一个允许方法调用自身的特征. 调

Java基础------递归(Java实现)

问题描述: 简单说明什么是递归?什么情况会使用?并使用Java实现一个简单的递归程序? 1. 什么是递归? 递归(recursion)作为一种算法在程序设计语言中广泛应用,是指函数在运行过程中直接或间接调用自身而产生的重入现象.  来自百度百科的解释: 递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大

[java基础]递归调用

递归调用:通过调用或间接调用程序自身 递归调用最重要的一点是,一定要有个头,要是没有头,一直调用下去,就成了死循环了. 代码示例: /** * 递归调用代码示例<br> * 说明:一个方法,自己直接或间接的调用自己.<br> * @author 冲出地球 * */ public class Recursion { /** * 示例程序:阶乘<br> * 一个数的阶乘,就是从1一直乘到那个数<br> * 示例:2! = 1*2 5! = 1*2*3*4*5&l

2.24 Java基础总结 ①for-each循环②继承概念③全类名④方法重写

①for-each循环②继承概念③全类名④方法重写 一.for-each循环依次遍历集合中每个元素的时候,for循环的一种int [] a = {1,2,3};for(int result : a){ System.out.println(result);} 全部依次遍历,但是没有细节的处理 二.继承is-a的关系子类继承来自父类中的所有属性和方法,呗继承的受访问修饰符限制但是构造不能被继承,父类的构造在构造是会起作用优点:①复用性②扩展父类属性和方法 Java是单继承,一个类只有一个父类单继承

java基础三种循环的使用及区别

摘要:Java新人初学时自己的一些理解,大神们路过勿喷,有什么说的不对不足的地方希望能给予指点指点,如果觉得可以的话,希望可以点一个赞,嘿嘿,在这里先谢了.在这里我主要说的是初学时用到的Java三个循环体的用法及区别:for  while和do while在什么时候会使程序代码更方便简洁: 一.for循环体,这个在我以后写程序代码都是比较长用的一个循环体之一,for循环主要多数用到我们已经知道循环次数的循环程序中. 表达式:for(初始化:布尔表达式:更新){ 程序代码....... } for

【Java基础】foreach循环

从一个小程序说起: 1 class lesson6foreach 2 { 3 public static void main(String[] args) 4 { 5 int array[]={2,3,1,5,4,6}; 6 7 for(int i=0;i<array.length;i++)//循环输出array的元素 8 { 9 System.out.println(array[i]); 10 } 11 } 12 } 但是大家注意,for循环中i的值,我们并不关心.因此从Java5之后,for