使用go求幂的几种方法小结
作者:autuan_liu 发布时间:2023-09-23 05:07:45
我就废话不多说了,大家还是直接看代码吧~
/*
* 二分幂法 求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)
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持
来源:https://blog.csdn.net/autuan_liu/article/details/69372239
猜你喜欢
- 在一行内声明CSS,对比下面两个:h2 {font-size:18px; border:1px solid&n
- 流程,通俗来讲,就是许多人,在做一系列的事情时,怎样相互协调,安排好这一系列事情的先后顺序,有什么事先的约定,需要达到怎样的预期目标。在UE
- Server对象主要是给编程人员提供一些方便的对象和属性。(1)ScriptTimeout属性:<%Server.ScriptTime
- MySQL是关系型数据库中的明星,MongoDB是文档型数据库中的翘楚。下面通过一个设计实例对比一下二者:假设我们正在维护一个手机产品库,里
- SQL Server有两种备份方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志
- MySQL 一级防范检查列表以下是加固你的 Mysql 服务器安全所要做的工作的重要参考:Securing MySQL: step-by-s
- 即text-overflow:ellipsis,需要配合white-space:nowrap使用。运行代码:<div style=&q
- 选项default-charaset-set=utf8;然后创建一个数据表 create table a_table(b varchar(2
- 实现在线人数统计最常用的方法就是golobal.asa结合session做,但这种方法有两个不利: 1、每个session要占用12k的服务
- 对于Dreamweaver这个广大用户早有听闻的网页编辑工具,除功能强大外,Dreamweaver一向被推崇为同类网页编辑软件中产生垃圾代码
- 最近将Jesse James Garrett的《用户体验的要素》一书读了两遍,做一些简要的摘录并添加一些个人注释。当然,一本好书绝对不是简单
- 本文主要给大家介绍了关于webpack中publicPath路径问题的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:output:
- CSS入门很简单,规则不多,写法也比较灵活,因此也带来了很多有创意的写法。跟IE一样,很好的容错性,像《 边框样式写法总结 》所说的bord
- 淘宝的投诉类型里有这么一条“收款不发货”。帮助中心里是这么解释的:买、卖双方在淘宝上成交后,当卖家在收到买家汇款后没有按时履行发货义务,或买
- 根据微软论坛作者的英文解释,.NET framework 4.0 安装失败回滚貌似是因为“msvcr100_clr0400.d
- 静态方法:将下面的代码复制到<body>~</body>内 程序代码 <table cellpadd
- 上一篇的DOCTYPE声明好以后,接下来的代码是:<html xmlns="xhtml" ta
- 本文实例讲述了PHP实现将浏览历史页面网址保存到cookie的方法。分享给大家供大家参考。具体如下:将浏览历史页面网址保存到cookie,大
- 最简单的方法:取整后判断是否和原值相等!javascript的取整函数是:parseIntif(parseInt(value)==value
- 影响用户访问的最大部分是前端的页面。网站的划分一般为二:前端和后台。我们可以理解成后台是用来实现网站的功能的,比如:实现用户注册,用户能够为