算法:x的n次方

简介: 该题是用来公司教学,并无难度。用于说明算法效率差异以及循环和递归的效率差别。   package practice; import java.math.BigDecimal; /** * @author caiyu * @date 2014-12-3 */ publ...

该题是用来公司教学,并无难度。用于说明算法效率差异以及循环和递归的效率差别。

 

package practice;

import java.math.BigDecimal;

/**
 * @author caiyu
 * @date 2014-12-3
 */
public class X_N_Square {
    static BigDecimal x = new BigDecimal(7);

    public static void main(String[] args) {
        int n = 1000;
        BigDecimal result = x;

        long time = System.currentTimeMillis();
        if (n < 5000)
            for (int i = 1; i < n; i++) {
                result = result.multiply(x);
            }
        System.out.println(System.currentTimeMillis() - time);

        if (n < 5000)
            System.out.println(result);

        time = System.currentTimeMillis();
        result = cal(n, x);
        System.out.println(System.currentTimeMillis() - time);

        if (n < 5000)
            System.out.println(result);

        time = System.currentTimeMillis();
        // 换底公式
        int count = (int) Math.floor(Math.log(n) / Math.log(2));
        result = x;
        while (count-- > 0) {
            result = (n >> count) % 2 == 0 ? result.multiply(result) : result
                    .multiply(result).multiply(x);
        }
        System.out.println(System.currentTimeMillis() - time);

        if (n < 5000)
            System.out.println(result);
    }

    public static BigDecimal cal(int n, BigDecimal r) {
        if (n == 1)
            return x;
        if (n % 2 == 0) {
            r = cal(n / 2, r);
            return r.multiply(r);
        } else {
            r = cal((n - 1) / 2, r);
            return r.multiply(r).multiply(x);
        }
    }

}

 

目录
相关文章
|
算法 计算机视觉
【MATLAB 】 VMD 信号分解+希尔伯特黄变换+边际谱算法
【MATLAB 】 VMD 信号分解+希尔伯特黄变换+边际谱算法
1325 0
|
机器学习/深度学习 存储 算法
竞争学习原理与策略| 学习笔记
快速学习竞争学习原理与策略。
竞争学习原理与策略| 学习笔记
|
Java API
SpringBoot 整合swagger3.X
SpringBoot 整合swagger3.X
1226 0
|
11月前
|
数据采集 数据可视化 API
QUIC协议优化:HTTP/3环境下的超高速异步抓取方案
本文介绍了一种基于QUIC和HTTP/3的异步爬虫方案,用于抓取知乎热榜数据并生成趋势图。通过HTTPX与aioquic结合实现高性能连接复用,配合代理IP绕过反爬限制,提取标题、热度等信息。利用Python代码示例展示了异步抓取流程,并借助Matplotlib绘制话题热度变化图表。分析显示突发热点生命周期短,而深度话题热度更稳定。此方案可优化内容运营策略,快速捕捉潜在爆款话题。
447 4
QUIC协议优化:HTTP/3环境下的超高速异步抓取方案
|
5月前
|
数据采集 算法 物联网
蓝牙定位技术原理:从BLE信号到高精度定位的实现逻辑
蓝牙定位凭借低成本、低功耗与高兼容性,依托BLE信号实现从粗略到高精度的定位。通过RSSI、ToF测距与AoA/AoD测向技术,结合多基站协同和算法优化,可实现米级乃至厘米级定位,广泛应用于室内场景。
|
Python 存储 自然语言处理
Langchain 和 RAG 最佳实践
这是一篇关于LangChain和RAG的快速入门文章,主要参考了由Harrison Chase和Andrew Ng讲授的​​Langchain chat with your data​​​课程。你可以在​​rag101仓库​​​中查看完整代码。本文翻译自我的英文博客,最新修订内容可随时参考:​​LangChain 与 RAG 最佳实践​​。
692 4
Langchain 和 RAG 最佳实践
|
Devops 网络安全 CDN
微软警告:Azure CDN将关闭,需尽快迁移以避免服务中断
微软警告:Azure CDN将关闭,需尽快迁移以避免服务中断
|
算法
递归和迭代详解
递归和迭代详解
1262 1
|
存储 程序员 C++
Python中的“Short”类型模拟与理解
Python中的“Short”类型模拟与理解
375 2
|
机器学习/深度学习 自然语言处理 算法
深度学习如何入门?
深度学习入门的指南,包括准备基础知识、学习深度学习理论、实践操作、进阶学习、参与社区和不断实践与反思等步骤。
676 0