怎么用python實現(xiàn)一個指數(shù)運算-創(chuàng)新互聯(lián)

本篇內(nèi)容主要講解“怎么用python實現(xiàn)一個指數(shù)運算”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“怎么用python實現(xiàn)一個指數(shù)運算”吧!

創(chuàng)新互聯(lián)建站2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站制作、成都網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元新寧做網(wǎng)站,已為上家服務(wù),為新寧各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220

這個題目有很簡單,就是實現(xiàn)一個指數(shù)運算方法,但是對于遞歸次數(shù)和運算時間有約束。

指數(shù)運算,就是pow(x,n), x可以是浮點數(shù),輸入為x為2.000,n為10,返回1024.000;其中指數(shù)n可以為負數(shù)。

Input: 2.00000, 10
Output: 1024.00000 

其實python默認內(nèi)置的指數(shù)計算符號是**,比如上面就是2.000**10;直接就是用return x**n提交竟然也通過了,還比62%的時間快。

想想當(dāng)然不是那么搞得,思考了下,直接一個一個乘積計算必定超過運算效率約束;可以用二分法,比如pow(x,n),如果n為偶數(shù),可以分為pow(x,n/2)*pow(x,n/2);如果n非偶數(shù)就是多乘一次x,其他就是偶數(shù)。然后在使用緩存字典方法,避免重復(fù)計算。

在后面計算時候發(fā)現(xiàn),測試系統(tǒng)是不會每次計算不同(x,n)都新建對象來刷新緩存字典,造成第二次的(x,n)都使用第一次的緩存字典;所以每次新的的(x,n)的時候都情況下緩存字典。

提交后,發(fā)現(xià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實現(xiàn)一個指數(shù)運算”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

網(wǎng)站名稱:怎么用python實現(xiàn)一個指數(shù)運算-創(chuàng)新互聯(lián)
瀏覽地址:http://bm7419.com/article24/hcjje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、ChatGPT、建站公司、面包屑導(dǎo)航域名注冊、網(wǎng)頁設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管