第一季:5递归与迭代【Java面试题】

简介: 第一季:5递归与迭代【Java面试题】

前言


2022 9/30 12:36

路漫漫其修远兮,吾将上下而求索


本文是根据尚硅谷学习所做笔记

仅供学习交流使用,转载注明出处


推荐

【尚硅谷经典Java面试题第一季(java面试精讲)-哔哩哔哩】

第一季:5递归与迭代

题目

编程题:

有 n 步台阶,一次只能上 1 步或者 2 步,共有多少种走法?

1.递归

2.循环迭代

递归

斐波那契数列


package fbnq5;
import org.junit.Test;
public class TestStep {
    @Test
    public void test() {
        long start=System.currentTimeMillis();
        System.out.println(f(40));//165580141
        long end=System.currentTimeMillis();
        System.out.println(end-start);//335
    }
    //实现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 fbnq5;
import org.junit.Test;
public class TestStep {
    @Test
    public void test() {
        long start=System.currentTimeMillis();
        System.out.println(f(40));//165580141
        long end=System.currentTimeMillis();
        System.out.println(end-start);//335
    }
    //实现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);
    }
}

小结

方法调用自身称为递归,利用变量的原值推出新值称为迭代。


递归


优点:大问题转为小问题,可以减少代码量,同时代码精简,可读性好;

缺点:递归调用浪费了空间,而且递归太深容易造成堆栈的溢出。

迭代


优点:代码运行效率好,因为时间复杂度为0(n),而且没有额外空间的开销;

缺点:代码不如递归简洁,可读性好

最后


2022 9/30 13:11


p5


Markdown 1251 字数 121 行数 当

HTML 1053 字数 69 段落

相关文章
|
4天前
|
SQL Java
java面试题笔试常见选择题大全含答案
java面试题笔试常见选择题大全含答案
|
1天前
|
Java
蓝桥杯Java组暴力递归搜图
蓝桥杯Java组暴力递归搜图
12 4
|
4天前
|
SQL JavaScript Java
java程序员面试题大全含答案(2018--2019)
java程序员面试题大全含答案(2018--2019)
|
4天前
|
设计模式 开发框架 Java
java设计模式面试题大全含答案
java设计模式面试题大全含答案
|
4天前
|
缓存 安全 Java
Java线程面试题含答案
Java线程面试题含答案
|
1天前
|
Java
java使用递归遍历文件目录
java使用递归遍历文件目录
5 0
|
3天前
|
Java Android开发 Kotlin
Android面试题:App性能优化之Java和Kotlin常见的数据结构
Java数据结构摘要:ArrayList基于数组,适合查找和修改;LinkedList适合插入删除;HashMap1.8后用数组+链表/红黑树,初始化时预估容量可避免扩容。SparseArray优化查找,ArrayMap减少冲突。 Kotlin优化摘要:Kotlin的List用`listOf/mutableListOf`,Map用`mapOf/mutableMapOf`,支持操作符重载和扩展函数。序列提供懒加载,解构用于遍历Map,扩展函数默认参数增强灵活性。
11 0
|
4天前
|
Java
杭电acm2018 母牛的故事 Java解法 经典递归
杭电acm2018 母牛的故事 Java解法 经典递归
6 0
|
17小时前
|
Java
java线程之用户线程与守护线程
java线程之用户线程与守护线程
6 1
java线程之用户线程与守护线程
|
2天前
|
Java
Java中的`synchronized`关键字是一个用于并发控制的关键字,它提供了一种简单的加锁机制来确保多线程环境下的数据一致性。
【6月更文挑战第24天】Java的`synchronized`关键字确保多线程数据一致性,通过锁定代码块或方法防止并发冲突。同步方法整个方法体为临界区,同步代码块则锁定特定对象。示例展示了如何在`Counter`类中使用`synchronized`保证原子操作和可见性,同时指出过度使用可能影响性能。
10 4