第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

golang 中的 100 階乘

golang 中的 100 階乘

Go
繁花不似錦 2023-04-04 14:38:29
我想在 golang 中計(jì)算 100 個(gè)階乘。這是我正在使用的代碼。var fact big.Intfact.MulRange(1, 100)打印輸出給出30414093201713378043612608166064768844377641568960512000000000000但是谷歌搜索 100!給出9.332622e+157。我認(rèn)為這可能是因?yàn)槲艺谑褂茫ɑ蚩赡懿皇牵┑臄?shù)據(jù)類(lèi)型。我該如何解決?提前致謝。編輯:所以我在 go playground 中運(yùn)行了這段代碼,它給出了正確的答案。這是由于我的 PC 的限制嗎?另外,當(dāng)我將它轉(zhuǎn)換為字符串并遍歷它時(shí),它顯示不同的數(shù)字str := fact.String()for _,val := range str{    fmt.Print(val)}這是所有的代碼package mainimport (    "fmt"    "math/big")func main() {    var fact big.Int    fact.MulRange(1, 100)    fmt.Println(fact)    n := fact.String()    fmt.Println(n) //printing 100!    sum := 0    for _, i := range n {        sum += int(i) //sum of each digits in 100!    }    fmt.Println(sum)}這是 go env 顯示的內(nèi)容:set GOARCH=amd64set GOBIN=set GOCACHE=C:\Users\user\AppData\Local\go-buildset GOEXE=.exeset GOHOSTARCH=amd64set GOHOSTOS=windowsset GOOS=windowsset GOPATH=C:\Users\user\goset GORACE=set GOROOT=C:\Goset GOTMPDIR=set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64set GCCGO=gccgoset CC=gccset CXX=g++set CGO_ENABLED=1set CGO_CFLAGS=-g -O2set CGO_CPPFLAGS=set CGO_CXXFLAGS=-g -O2set CGO_FFLAGS=-g -O2set CGO_LDFLAGS=-g -O2set PKG_CONFIG=pkg-configset GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\user\AppData\Local\Temp\go-build839268890=/tmp/go-build -gno-record-gcc-switches去版本:去版本go1.10.1 windows/amd64
查看完整描述

1 回答

?
一只甜甜圈

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊

要打印一個(gè)string值,只需將其按原樣傳遞給fmt.Println()

str?:=?fact.String()
fmt.Println(str)

另請(qǐng)注意,您不需要調(diào)用它的String()方法,fmt包會(huì)為您完成。但如果你只是傳遞fact給它就不行,因?yàn)?code>Int.String()有指針接收器,所以你必須傳遞一個(gè)指針給它:

fmt.Println(&fact)

或者*big.Int首先聲明并使用,然后您可以fact簡(jiǎn)單地通過(guò)打?。?/p>

var fact = new(big.Int)

fact.MulRange(1, 100)

fmt.Println(fact)

事實(shí)上,因?yàn)樗械姆椒ǘ加?code>big.Int指針接收者,你應(yīng)該總是聲明和使用指針big.Int以避免意外。

筆記:

您的原始代碼不會(huì)打印您想要的內(nèi)容,因?yàn)?code>for range在一個(gè)字符串上的范圍超過(guò)了它的符文(字符),并且rune是的別名int32,因此結(jié)果的字符將打印為單獨(dú)的數(shù)字,它們之間沒(méi)有空格(因?yàn)槟?code>fmt.Print()稱(chēng)呼)。

出于同樣的原因,要計(jì)算數(shù)字的總和,您必須將符文轉(zhuǎn)換為它們所代表的數(shù)字的數(shù)值。為此,您可以簡(jiǎn)單地使用digit - '0'

str := fact.String()

sum := 0

for _, val := range str {

? ? sum += int(val - '0')

}

fmt.Println(sum)

93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000648


查看完整回答
反對(duì) 回復(fù) 2023-04-04
  • 1 回答
  • 0 關(guān)注
  • 167 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)