1. 程式人生 > 程式設計 >使用go求冪的幾種方法小結

使用go求冪的幾種方法小結

我就廢話不多說了,大家還是直接看程式碼吧~

/*
*  二分冪法 求x^n
 */
// 求整數冪
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)
  }
}
/*
*  迴圈法 求x^n
 */
func powerf3(x float64,n int) float64 {
  ans := 1.0
  for n != 0 {
    ans *= x
    n--
  }
  return ans
}

測試案例:

使用go求冪的幾種方法小結

補充:Go常見運算操作

1、算術運算子

// 運算子 描述 例項

// + 相加 A + B 輸出結果 30

// - 相減 A - B 輸出結果 -10

// * 相乘 A * B 輸出結果 200

// / 相除 B / A 輸出結果 2

// % 求餘 B % A 輸出結果 0

// ++ 自增 A++ 輸出結果 11

// -- 自減 A-- 輸出結果 9

2、關係運算符

// 運算子 描述 例項

// == 檢查兩個值是否相等,如果相等返回 True 否則返回 False。 (A == B) 為 False

// != 檢查兩個值是否不相等,如果不相等返回 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、邏輯運算子

// 運算子 描述 例項

// && 邏輯 AND 運算子。 如果兩邊的運算元都是 True,則條件 True,否則為 False。 (A && B) 為 False

// || 邏輯 OR 運算子。 如果兩邊的運算元有一個 True,則條件 True,否則為 False。 (A || B) 為 True

// ! 邏輯 NOT 運算子。 如果條件為 True,則邏輯 NOT 條件 False,否則為 True。 !(A && B) 為 True

4、賦值運算子

// i++ 自增

// i-- 自減

// i+=j 等價於 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的結果",c>d)
println("a==b的結果",c==d)
println("a<b的結果",c<d)
println("a!=b的結果",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 // 等價於 j = j+i
fmt.Println(j)
i++
j *= i
fmt.Println(j)
}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。