杭州萧山区Java培训怎么收费
Java是个时髦语言。它吸收了计算机科学领域的各种较新成果,作为一个分布式的,面向对象的程序设计语言,可以让位于任何地方的任何计算机应用网络上的应用程序。
初识Java
Java入门,Java基础,Java使用技巧
面向对象编程
Java面向对象编程理论与应用,集合框架与数据结构, Java文件操作与网络编程
数据库理论与应用
数据存储的概念及理论,数据库技术及产品的发展史, 当下流行数据库MySQL和Oracle数据库的使用
互联网网站及信息系统的开发与应用
网站页面及效果设计,交互式网站开发技术及开发流 程,网站开发框架及简单企业开发应用
企业团队项目协同开发与维护
协同开发概述,协同开发技术原理与应用
商业项目模块化基础与应用
软件项目自动化构建概述,自动化构建原理,自动化构建技术与应用
软件项目测试与实施
软件测试概述,软件测试流程及测试工具使用,测试档案及测试用例编写,测试报告分析
企业主流开发框架应用与优化
框架技术概述,框架技术发展史,主流框架介绍, 主流框架的使用,整合多个框架综合开发项目
递归VS迭代
对程序员来说,递归应该是一个与生俱来的思想(a built-in thought),可以通过一个简单的例子来说明。
问题:有n步台阶,一次只能上1步或2步,共有多少种走法。
步骤1:找到走完前n步台阶和前n-1步台阶之间的关系。
为了走完n步台阶,只有两种方法:从n-1步台阶爬1步走到或从n-2步台阶处爬2步走到。如果f(n)是爬到第n步台阶的方法数,那么f(n) = f(n-1) + f(n-2)。
步骤2:确保开始条件是正确的。
f(0) = 0;
f(1) = 1;
public static int f(int n){
if(n <= 2) return n;
int x = f(n-1) + f(n-2);
return x;
}
递归方法的时间复杂度是n的指数级,因为有很多冗余的计算,如下:
f(5)
f(4) + f(3)
f(3) + f(2) + f(2) + f(1)
f(2) + f(1) + f(1) + f(0) + f(1) + f(0) + f(1)
f(1) + f(0) + f(1) + f(1) + f(0) + f(1) + f(0) + f(1)
直接的想法是将递归转换为迭代:
public static int f(int n) {
if (n <= 2){
return n;
}
int first = 1, second = 2;
int third = 0;
for (int i = 3; i <= n; i++) {
third = first + second;
first = second;
second = third;
}
return third;
}
对这个例子而言,迭代花费的时间更少,你可能也想看看Recursion vs Iteration。
更多培训课程,学习资讯,课程优惠等学校信息,请进入 杭州滨江区IT培训杭州萧山区php培训杭州java培训 网站详细了解,免费咨询电话:400-998-6158