首页 > 其他 > 详细

求一个数连续乘方的和

时间:2019-10-18 01:25:37      阅读:80      评论:0      收藏:0      [点我收藏+]

问题:求xn+xn-1xn-2+...+x0的值。

第一种是比较素朴直接的算法。

技术分享图片
@get_time
def sum_power(x, n):
    """
    朴素直接的算法,例如x=5,n=5的时候。一共做了5次加法,1+2+3+4=10次乘法。
    :param x:
    :param n:
    :return:
    """
    res = 0
    while n >= 0:
        res += x ** n
        n -= 1
    return res
朴素算法

第二种是秦九韶算法。

@get_time
def sum_power1(x, n):
    """
    秦九韶算法。先计算x**2的值,然后再x*(x**2),然后再x*(x*(x**2))。这样每次都可以利用上一次计算的结果。
    一共做了4次乘法,5次加法。相比较朴素直接的算法,乘法少了一个量级。
    :param x:
    :param n:
    :return:
    """
    res = 0
    m = 1
    while n >= 0:
        res += m
        m = x * m
        n -= 1
    return res

 

求一个数连续乘方的和

原文:https://www.cnblogs.com/walle-zhao/p/11695920.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!