欢迎来到代码驿站!

Golang

当前位置:首页 > 脚本语言 > Golang

使用go求幂的几种方法小结

时间:2021-03-17 09:40:47|栏目:Golang|点击:

我就废话不多说了,大家还是直接看代码吧~

/*
*  二分幂法 求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常见运算操作

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)
}

上一篇:Golang获取目录下的文件及目录信息操作

栏    目:Golang

下一篇:golang http 连接超时和传输超时的例子

本文标题:使用go求幂的几种方法小结

本文地址:http://www.codeinn.net/misctech/82458.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有