码迷,mamicode.com
首页 > 编程语言 > 详细

Java高频经典面试题(第一季)五:递归与迭代

时间:2019-09-27 14:55:13      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:pack   多少   col   0ms   i++   one   public   最大   imp   

编程题:  有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;
        
    }

}

 

 技术图片

 

 最大的不同: 迭代 花费的时间 比 递归 少很多。 

 

Java高频经典面试题(第一季)五:递归与迭代

标签:pack   多少   col   0ms   i++   one   public   最大   imp   

原文地址:https://www.cnblogs.com/william-dai/p/11597966.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!