使用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


猜你喜欢
- 定义流的作用是使用统一的方式处理文件、网络和数据压缩等共用同一套函数和用法的操作。简单而言,流是具有流式行为的资源对象。因此,流可以线性读写
- MySQL是一种常见的关系型数据库管理系统,常被用于各种应用程序中存储数据。当涉及到大量的数据时,数据库查询的性能就成了关键因素,这时就需要
- binlog二进制日志对于mysql数据库的重要性有多大,在此就不多说了。下面根据本人的日常操作经历,并结合网上参考资料,对binlog日志
- python版本:python 3.9 mutagen版本:1.46.0mutagen是一个处理音频元数据的pytho
- 1.安装1.1 创建虚拟环境mkdir myprojectcd myprojectpython3 -m venv venv1.2 进入虚拟环
- 我们使用编辑器的时候,想要在其中添加一个Django项目,这样就能在里面做一些想要的操作。有些人还没有对Django进行安装,这里直接用命令
- 1、简介QListWidget 是一个升级版本的QListView , 它已经建立一个基于数据存储模型(QListWidgetItem),直
- django是python语言快速实现web服务的大杀器,其开发效率可以非常的高!但因为秉承了语言的灵活性,django框架又太灵活,以至于
- 1. 概述对于社区,没有一个明确的定义,有很多对社区的定义,如社区是指在一个网络中,有一组节点,它们彼此都相似,而组内的节点与网络中的其他节
- 1、可以使用"+"号完成操作输出为:[1, 2, 3, 8, 'google', 'com
- 数值运算代码:# -*- coding=GBK -*-import cv2 as cv# 数值运算:加减乘除def shu_image(sr
- 节日用心准备的礼物,使用python画玫瑰和爱心,供大家参考,具体内容如下#!/usr/bin/env python#coding=utf-
- 最近,在项目开发过程中,碰到了数据库死锁问题,在解决问题的过程中,笔者对MySQL InnoDB引擎锁机制的理解逐步加深。案例如下:在使用S
- 在查看MySQL对文件的操作中,它在不同的操作系统上对文件的操作,除了使用标准C运行库函数,包括open、close、seek等,在Win3
- 首先,我用的mysql版本号是5.5.17的,最近遇到的问题是在eclipse中通过jdbc往数据库写中文数据的时候,在数据库中显示的是??
- 查看python3.4.1文档,发现对于decimal模块的讲解非常多,由此可见其功能也很强大(下面算是把我认为比较重要的半翻译半学习吧~)
- 判断类型在Python中我们可以使用type进行类型的判断#我们想看一个对象的的类型可以这样class A: passa = A
- 用python实现五子棋简单人机模式的练习过程,供大家参考,具体内容如下第一次写博客,我尽力把它写好。最近在初学python,今天就用自己的
- 本文实例讲述了python抽象基类用法。分享给大家供大家参考。具体如下:定义抽象类,需要使用abc模块,该模块定义了一个元类(ABCMeat
- 微信应用号(微信公众平台小程序,「应用号」的新称呼)终于来了!开源中国社区的博卡君通宵吐血赶稿写出的微信公众平台应用号开发教程!大家赶紧来学