使用go求冪的幾種方法小結(jié)
我就廢話不多說了,大家還是直接看代碼吧~
/*
* 二分冪法 求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常見運(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)文章
Go語(yǔ)言kylin任務(wù)自動(dòng)化實(shí)例詳解
這篇文章主要為大家介紹了Go語(yǔ)言kylin任務(wù)自動(dòng)化實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
使用Go語(yǔ)言創(chuàng)建error的幾種方式小結(jié)
Go語(yǔ)言函數(shù)(或方法)是支持多個(gè)返回值的,因此在Go語(yǔ)言的編程哲學(xué)中,函數(shù)的返回值的最后一個(gè)通常都是error類型,所以本文給大家介紹了使用Go語(yǔ)言創(chuàng)建error的幾種方式小結(jié),文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-01-01
Go語(yǔ)言 如何實(shí)現(xiàn)RSA加密解密
這篇文章主要介紹了Go語(yǔ)言實(shí)現(xiàn)RSA加密解密的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2021-05-05
golang并發(fā)工具M(jìn)apReduce降低服務(wù)響應(yīng)時(shí)間
這篇文章主要為大家介紹了golang并發(fā)使用MapReduce降低服務(wù)響應(yīng)時(shí)間實(shí)踐使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04

