网站建设资讯

NEWS

网站建设资讯

怎么用python实现一个指数运算

本篇内容主要讲解“怎么用python实现一个指数运算”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用python实现一个指数运算”吧!

成都创新互联2013年至今,是专业互联网技术服务公司,拥有项目成都网站建设、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元金门做网站,已为上家服务,为金门各地企业和个人服务,联系电话:18982081108

这个题目有很简单,就是实现一个指数运算方法,但是对于递归次数和运算时间有约束。

指数运算,就是pow(x,n), x可以是浮点数,输入为x为2.000,n为10,返回1024.000;其中指数n可以为负数。

Input: 2.00000, 10
Output: 1024.00000 

其实python默认内置的指数计算符号是**,比如上面就是2.000**10;直接就是用return x**n提交竟然也通过了,还比62%的时间快。

想想当然不是那么搞得,思考了下,直接一个一个乘积计算必定超过运算效率约束;可以用二分法,比如pow(x,n),如果n为偶数,可以分为pow(x,n/2)*pow(x,n/2);如果n非偶数就是多乘一次x,其他就是偶数。然后在使用缓存字典方法,避免重复计算。

在后面计算时候发现,测试系统是不会每次计算不同(x,n)都新建对象来刷新缓存字典,造成第二次的(x,n)都使用第一次的缓存字典;所以每次新的的(x,n)的时候都情况下缓存字典。

提交后,发现比87%的提交答案都快。和用python自带的n**x 对比也是快那么一些。

代码如下:

class Solution:
    cacheDict = {}
    def myRecursion(self,x,n):
            if n in self.cacheDict.keys():
                return self.cacheDict[n]
            if n%2 == 1:
                productRe = self.myRecursion(x, (n-1)/2)*self.myRecursion(x, (n-1)/2)*x
            else:
                productRe = self.myRecursion(x, n/2)*self.myRecursion(x, n/2)
                
            self.cacheDict[n] = productRe
            return productRe
        
    def myPow(self, x, n) -> float:
        if n < 0:
            self.cacheDict = {0:1,1:1/x}
            return self.myRecursion(1.0/x, abs(n))
        else:
            self.cacheDict = {0:1,1:x}
            return self.myRecursion(x, n)

到此,相信大家对“怎么用python实现一个指数运算”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


文章标题:怎么用python实现一个指数运算
文章分享:http://cdweb.net/article/gdjdgc.html