专栏首页算法之名两个斐波拉切数列运算的时间复杂度 顶

两个斐波拉切数列运算的时间复杂度 顶

有人提出了递归算法的时间复杂度问题,的确如此,递归的时间复杂度是随着数量级成指数增长的。

现在补充一个时间复杂度线性增长的方法。多谢朋友的指正。

import java.util.Scanner;

/**
 * Created by Administrator on 2018-02-15.
 */
public class Fibonacci {
    public static long FibonacciQty(int n) {
        long t1,t2;
        if(n == 1 || n == 2) {
            return 1;
        }else {
            t1 = FibonacciQty(n-1);
            t2 = FibonacciQty(n-2);
            return t1+t2;
        }
    }
    public static long FibonacciQty2(int n) {
        long t1 = 1;
        long t2 = 1;
        if(n == 1 || n == 2) {
            return 1;
        }else {
            for (int i = 2;i < n - 1;i++) {
                t2 = t1 + t2;
                t1 = t2 - t1;
            }
            return t1+t2;
        }
    }
    public static void main(String[] args) {
        System.out.println("递推算法求解兔子产仔问题!");
        System.out.print("请先输入时间:");
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        long num = Fibonacci.FibonacciQty2(n);
        System.out.println("经过"+n+"月的时间,共能繁殖成"+num+"对兔子!");
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring Security详解 顶

    2020-01-05 01:57:16.482 INFO 3932 --- [ main] .s.s.UserDetailsService...

    算法之名
  • 用工厂方法模式来下不同订单 顶

    Controller如下,用传递的内容来判断是哪种类型的订单,并给抽象订单工厂来获取具体的订单工厂,通过具体的订单工厂来生成订单服务,完成下单功能。考虑到线程安...

    算法之名
  • 分库分表 vs NewSQL数据库 顶

    最近与同行科技交流,经常被问到分库分表与分布式数据库如何选择,网上也有很多关于中间件+传统关系数据库(分库分表)与NewSQL分布式数据库的文章,但有些观点与判...

    算法之名
  • python爬取知乎话题图片

    什么是网络爬虫(也叫网络蜘蛛)?简单来说,是一种用来自动浏览万维网程序或脚本(网络爬虫的典型应用就是我们所熟知的搜索引擎)。既然如此,那么我们也可以写一个程序,...

    编程珠玑
  • 【技术分享】红队权限维持方法杂谈

    本次分享分两部分,分别介绍Linux和Windows的权限维持,今天主要介绍Linux的,为了节省时间,这里就选择我平时用的比较多的较为好用的方法来介绍

    用户7021283
  • 批量单聊消息发送时,没有返回发送失败的账户和错误码,不回调

    我要向(“a”, "b")两个个用户发送批量单聊消息,如果a账户存在(已登录过IM或已导入),而b账户不存在,通过REST API发送,并没有返回b发送失败的信...

    用户6968426
  • 漫画:“浅谈”二分查找

    好好学java
  • mpvue开发小程序

    beforeCreate created beforeMount mounted beforeUpdate updated activated d...

    达达前端
  • (3)Angular的开发

    达达前端
  • 小蛇学python(17)时间序列的数据处理

    不管是在金融学、经济学的社会学科领域,还是生态学、系统神经的自然学科领域,时间序列数据都是一种重要的结构化数据形式。

    用户2145057

扫码关注云+社区

领取腾讯云代金券