数据结构论坛

首页 » 分类 » 分类 » JAVA集P59P60递归算法的
TUhjnbcbe - 2021/1/8 9:14:00
手上白癜风能治疗吗         http://pf.39.net/bdfyy/bdfzd/190531/7183165.html

P59-58方法的重载overloead

只是名称相同,但是实际上是完全不同的方法

形参类型,形参个数,形参顺序不同的时候

方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。调用时,会根据不同的参数自动匹配对应的方法。

雷区

重载的方法,实际是完全不同的方法,只是名称相同而已!

构成方法重载的条件:

1.不同的含义:形参类型、形参个数、形参顺序不同

2.只有返回值不同不构成方法的重载

如:inta(Stringstr){}和voida(Stringstr){}

不构成方法重载

3.只有形参的名称不同的时候,不构成方法的重载

比如:

inta(Stringstr){}和inta(Strings){}

不构成方法的重载

方法重载

packagehello;/***测试方法的重载**

authorVan.G**/publicclassTestOverload{publicstaticvoidmain(String[]args){System.out.println(add(3,5));//8System.out.println(add(3,5,10));//18System.out.println(add(3.0,5));//8.0System.out.println(add(3,5.0));//8.0//我们已经见过的方法的重载System.out.println();//0个参数System.out.println(1);//参数是1个intSystem.out.println(3.0);//参数是1个double}/**求和的方法static方便调用,*/publicstaticintadd(intn1,intn2){intsum=n1+n2;returnsum;}//方法名相同,参数个数不同,构成重载publicstaticintadd(intn1,intn2,intn3){intsum=n1+n2+n3;returnsum;}//方法名相同,参数类型不同,构成重载publicstaticdoubleadd(doublen1,intn2){doublesum=n1+n2;returnsum;}//方法名相同,参数顺序不同,构成重载publicstaticdoubleadd(intn1,doublen2){doublesum=n1+n2;returnsum;}//编译错误:只有返回值不同,不构成方法的重载publicstaticdoubleadd(intn1,intn2){doublesum=n1+n2;returnsum;}//编译错误:只有参数名称不同,不构成方法的重载publicstaticintadd(intn2,intn1){doublesum=n1+n2;returnsum;}}

P递归算法的详解——递归和迭代效率的测试

递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是“自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己。

利用递归可以用简单的程序来解决一些复杂的问题。比如:斐波那契数列的计算、汉诺塔、快排等问题。

递归结构包括两个部分:

1.定义递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。

2.递归体。解答:什么时候需要调用自身方法。

packagehello;/***测试递归的效率*

authorVan.G**/publicclassTestRecursiion01{publicstaticvoidmain(String[]args){a();}staticvoida(){System.out.println("a");b();}staticvoidb(){System.out.println("b");}}

packagehello;/***测试递归的效率*

authorVan.G**/publicclassTestRecursiion01{publicstaticvoidmain(String[]args){a();}staticintcount=0;staticvoida(){System.out.println("a");count++;if(count10){a();}else{return;}}staticvoidb(){System.out.println("b");}}

递归的缺陷

简单的程序是递归的优点之一。但是递归调用会占用大量的系统堆栈,内存耗用多,在递归调用层次多时速度要比循环慢的多,所以在使用递归时要慎重。

比如上面的递归耗时ms。但是用普通循环的话快得多,如示例3-23所示。

packagehello;/***测试递归的效率*

authorVan.G**/publicclassTestRecursiion01{publicstaticvoidmain(String[]args){longd3=System.currentTimeMillis();inta=10;intresult=1;while(a1){result*=a*(a-1);a-=2;}longd4=System.currentTimeMillis();System.out.println(result);System.out.printf("普通循环费时:%s%n",d4-d3);}}

注意事项

任何能用递归解决的问题也能使用迭代解决。当递归方法可以更加自然地反映问题,并且易于理解和调试,并且不强调效率问题时,可以采用递归;

在要求高性能的情况下尽量避免使用递归,递归调用既花时间又耗内存。

●句子

●编程学习

●大学生生活图鉴

●JavaScript

●计算机网络原理

●计算机组成原理

●操作系统

●数据库系统概论

●数据结构

●英语

●R语言

●Linux

●人生哲学以及电竞

●云计算与人工智能

●新媒体运营以及各种资源分享

●明星电视剧社会现象娱乐

仙女都在看点点点,赞和在看都在这儿!凡花花的小窝

欢迎赞赏

1
查看完整版本: JAVA集P59P60递归算法的