• 使用Horner法则计算多项式的值


    计算Pn(x) = an * x^n + an-1 * x^(n-1) + ... + a1 * x + a0

    直接计算,需要做的乘法次数 1+2+3+……+n = n(1+n)/2 = O(n2)

    使用Horner规则,Pn(x) = ((... ((anx + an-1)x + an-2)x + ... + a2)x + a1)x + a0

    需要做的乘法次数 n = O(n) 

    public class Horner{
        public static int compute(int x, int[] A){
            //计算Pn(x) = an * x^n + an-1 * x^(n-1) + ... + a1 * x + a0
            int result = A[A.length-1];
            for(int i = A.length-2; i >= 0; i --){
                result = x*result + A[i];
            }
            return result;
        }
        public static void main(String[] args){
            //单元测试。取 ai = 2^n-i;n为10。答案应为1024 * 11 = 11264
            int x = 2;
            final int N = 10;
            int[] A = new int[N+1];
            int tmp = 1024;
            for(int i = 0; i < A.length; i ++){
                A[i] = tmp;
                tmp /= 2;
            }
            System.out.println(compute(x, A));
        }
    }
    Java
  • 相关阅读:
    Python 模块管理
    Python 练习: 计算器
    Linux 系统性能分析工具 sar
    Python 正则介绍
    Python ConfigParser 模块
    Python logging 模块
    Python hashlib 模块
    Python sys 模块
    09 下拉框 数据验证
    08 条件排序
  • 原文地址:https://www.cnblogs.com/7hat/p/3385361.html
Copyright © 2020-2023  润新知