使用go求冪的幾種方法小結(jié)
我就廢話(huà)不多說(shuō)了,大家還是直接看代碼吧~
/* * 二分冪法 求x^n */ // 求整數(shù)冪 package main import ( "fmt" "math" ) func main() { var x float64 var n int fmt.Scanf("%f%d", &x, &n) fmt.Println(powerf(x, n)) fmt.Println(powerf2(x, n)) fmt.Println(powerf3(x, n)) fmt.Println(math.Pow(x, float64(n))) } func powerf(x float64, n int) float64 { ans := 1.0 for n != 0 { if n%2 == 1 { ans *= x } x *= x n /= 2 } return ans } /* * 遞歸法 求x^n */ func powerf2(x float64, n int) float64 { if n == 0 { return 1 } else { return x * powerf2(x, n-1) } } /* * 循環(huán)法 求x^n */ func powerf3(x float64, n int) float64 { ans := 1.0 for n != 0 { ans *= x n-- } return ans }
測(cè)試案例:
補(bǔ)充:Go常見(jiàn)運(yùn)算操作
1、算術(shù)運(yùn)算符
// 運(yùn)算符 描述 實(shí)例
// + 相加 A + B 輸出結(jié)果 30
// - 相減 A - B 輸出結(jié)果 -10
// * 相乘 A * B 輸出結(jié)果 200
// / 相除 B / A 輸出結(jié)果 2
// % 求余 B % A 輸出結(jié)果 0
// ++ 自增 A++ 輸出結(jié)果 11
// -- 自減 A-- 輸出結(jié)果 9
2、關(guān)系運(yùn)算符
// 運(yùn)算符 描述 實(shí)例
// == 檢查兩個(gè)值是否相等,如果相等返回 True 否則返回 False。 (A == B) 為 False
// != 檢查兩個(gè)值是否不相等,如果不相等返回 True 否則返回 False。 (A != B) 為 True
// > 檢查左邊值是否大于右邊值,如果是返回 True 否則返回 False。 (A > B) 為 False
// < 檢查左邊值是否小于右邊值,如果是返回 True 否則返回 False。 (A < B) 為 True
// >= 檢查左邊值是否大于等于右邊值,如果是返回 True 否則返回 False。 (A >= B) 為 False
// <= 檢查左邊值是否小于等于右邊值,如果是返回 True 否則返回 False。 (A <= B) 為 True
3、邏輯運(yùn)算符
// 運(yùn)算符 描述 實(shí)例
// && 邏輯 AND 運(yùn)算符。 如果兩邊的操作數(shù)都是 True,則條件 True,否則為 False。 (A && B) 為 False
// || 邏輯 OR 運(yùn)算符。 如果兩邊的操作數(shù)有一個(gè) True,則條件 True,否則為 False。 (A || B) 為 True
// ! 邏輯 NOT 運(yùn)算符。 如果條件為 True,則邏輯 NOT 條件 False,否則為 True。 !(A && B) 為 True
4、賦值運(yùn)算符
// i++ 自增
// i-- 自減
// i+=j 等價(jià)于 i = i + j
5、代碼
package main import "fmt" func main() { var a,b = 10,11 fmt.Printf("a+b=%d\n",a+b) fmt.Printf("a-b=%d\n",a-b) fmt.Printf("a*b=%d\n",a*b) fmt.Printf("a/b=%d\n",a/b) fmt.Printf("a求余b=%d\n",a%b) var c,d=10,9 println("a>b的結(jié)果",c>d) println("a==b的結(jié)果",c==d) println("a<b的結(jié)果",c<d) println("a!=b的結(jié)果",c!=d) var e,f = true,false println(e&&f) println(e||f) println(!f) var i,j = 1,0 i++ fmt.Println(i) i-- fmt.Println(i) j += i // 等價(jià)于 j = j+i fmt.Println(j) i++ j *= i fmt.Println(j) }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
golang中http請(qǐng)求的context傳遞到異步任務(wù)的坑及解決
這篇文章主要介紹了golang中http請(qǐng)求的context傳遞到異步任務(wù)的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03Golang設(shè)計(jì)模式之外觀模式講解和代碼示例
外觀是一種結(jié)構(gòu)型設(shè)計(jì)模式, 能為復(fù)雜系統(tǒng)、 程序庫(kù)或框架提供一個(gè)簡(jiǎn)單 (但有限) 的接口,這篇文章就給大家詳細(xì)介紹一下Golang的外觀模式,文中有詳細(xì)的代碼示例,具有一定的參考價(jià)值,需要的朋友可以參考下2023-06-0610個(gè)可以?xún)?yōu)化代碼的Go語(yǔ)言技巧分享
這篇文章主要為大家詳細(xì)介紹了10個(gè)可以?xún)?yōu)化代碼的Go語(yǔ)言技巧,從而讓我們的代碼更加優(yōu)雅,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考下2024-01-01linux中用shell快速安裝配置Go語(yǔ)言的開(kāi)發(fā)環(huán)境
相信每位開(kāi)發(fā)者都知道選擇一門(mén)開(kāi)發(fā)語(yǔ)言,免不了需要安裝配置開(kāi)發(fā)環(huán)境,所以這篇文章給大家分享了linux下使用shell一鍵安裝配置GO語(yǔ)言開(kāi)發(fā)環(huán)境的方法,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-10-10