本篇內(nèi)容主要講解“怎么用python實(shí)現(xiàn)一個(gè)指數(shù)運(yùn)算”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“怎么用python實(shí)現(xiàn)一個(gè)指數(shù)運(yùn)算”吧!
成都創(chuàng)新互聯(lián)2013年至今,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元金門(mén)做網(wǎng)站,已為上家服務(wù),為金門(mén)各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
這個(gè)題目有很簡(jiǎn)單,就是實(shí)現(xiàn)一個(gè)指數(shù)運(yùn)算方法,但是對(duì)于遞歸次數(shù)和運(yùn)算時(shí)間有約束。
指數(shù)運(yùn)算,就是pow(x,n), x可以是浮點(diǎn)數(shù),輸入為x為2.000,n為10,返回1024.000;其中指數(shù)n可以為負(fù)數(shù)。
Input: 2.00000, 10
Output: 1024.00000
其實(shí)python默認(rèn)內(nèi)置的指數(shù)計(jì)算符號(hào)是**,比如上面就是2.000**10;直接就是用return x**n提交竟然也通過(guò)了,還比62%的時(shí)間快。
想想當(dāng)然不是那么搞得,思考了下,直接一個(gè)一個(gè)乘積計(jì)算必定超過(guò)運(yùn)算效率約束;可以用二分法,比如pow(x,n),如果n為偶數(shù),可以分為pow(x,n/2)*pow(x,n/2);如果n非偶數(shù)就是多乘一次x,其他就是偶數(shù)。然后在使用緩存字典方法,避免重復(fù)計(jì)算。
在后面計(jì)算時(shí)候發(fā)現(xiàn),測(cè)試系統(tǒng)是不會(huì)每次計(jì)算不同(x,n)都新建對(duì)象來(lái)刷新緩存字典,造成第二次的(x,n)都使用第一次的緩存字典;所以每次新的的(x,n)的時(shí)候都情況下緩存字典。
提交后,發(fā)現(xiàn)比87%的提交答案都快。和用python自帶的n**x 對(duì)比也是快那么一些。
代碼如下:
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)
到此,相信大家對(duì)“怎么用python實(shí)現(xiàn)一個(gè)指數(shù)運(yùn)算”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
本文標(biāo)題:怎么用python實(shí)現(xiàn)一個(gè)指數(shù)運(yùn)算
標(biāo)題鏈接:http://vcdvsql.cn/article12/gdjdgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站制作、用戶體驗(yàn)、企業(yè)網(wǎng)站制作、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)