Java高频经典面试题(第一季)五:递归与迭代
时间:2019-09-27
本文章向大家介绍Java高频经典面试题(第一季)五:递归与迭代,主要包括Java高频经典面试题(第一季)五:递归与迭代使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
编程题: 有n步台阶, 一次只能上 1步 或 2步, 共有多少种走法?
- 递归
- 循环迭代
递归:
package will01; import org.junit.Test; public class TestStep { @Test public void test(){ long start = System.currentTimeMillis(); System.out.println(f(30)); long end = System.currentTimeMillis(); System.out.println("time : "+ (end - start)); } //实现f(n):求 n步 台阶,一共有 几种 走法 public int f(int n ){ if(n < 1){ throw new IllegalArgumentException(n + "不能小于1 "); } if(n == 1 || n == 2){ return n ; } return f(n - 2)+ f( n - 1); } }
循环迭代:
package will01; import org.junit.Test; public class TestStep2 { @Test public void test(){ long start = System.currentTimeMillis(); System.out.println(loop(40)); long end = System.currentTimeMillis(); System.out.println("time : "+ (end - start)); // < 0ms } public int loop(int n){ if(n < 1){ throw new IllegalArgumentException(n + "不能小于1 "); } if(n == 1 || n == 2){ return n; } int one = 2; // 初始化为走到第二台阶的走法 int two = 1; // 初始化为走到第一台阶的走法 int sum = 0; for(int i = 3; i <= n ; i++){ //最后跨两步 + 最后跨一步 的走法 sum = two + one ; two = one; one = sum; } return sum; } }
最大的不同: 迭代 花费的时间 比 递归 少很多。
原文地址:https://www.cnblogs.com/william-dai/p/11597966.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Java 水题系列(2)Pi的近似值
- vue 无缝滚动组件 vue-seamless-scroll
- Java 水题系列(3)回文素数
- NDB Cluster 8.0中的自动模式同步:第1部分
- MongoDB助力一个物流订单系统
- NDB Cluster 8.0中的自动模式同步:第2部分
- NetCore配置框架详解
- 初识ABP vNext(11):聚合根、仓储、领域服务、应用服务、Blob储存
- 群组复制MySQL Group Replication
- 关于自定义单选框InfoPreference的笔记
- Python爬虫之gerapy爬虫管理
- 内存地址中藏着的学问
- Python爬虫之crawlspider类的使用
- 数据结构 - 堆(Heap)
- 信息收集之主机发现:masscan