转二进制处理输入为0

来源:2-5 循环

慕斯6477199

2019-06-21

func convertToBin(n int) string {
result := ""
for ; n >= 0; n /=2 {
if n == 0 {
result = "0"
break
} else {
lsb := n % 2
result = strconv.Itoa(lsb) + result
}
}
return result
}
convertToBin(3)
convertToBin(5)
为什么输出都是0, n 不能大于>=0吗?

写回答

1回答

ccmouse

2019-06-26

你需要单步跟踪一下,就能发现原因。

这里是因为n不断的变小,最终总会变成0,从而触发

if n == 0 {
result = "0"
break

可以把这段拉到循环外面。

0
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程