202. 快乐数

image.png

  1. package main
  2. import "fmt"
  3. func isHappy(n int) bool {
  4. n = digitResult(n)
  5. m :=make(map[int]struct{},0)
  6. for n!=1{
  7. if _,ok:=m[n];!ok{
  8. m[n]= struct{}{}
  9. n =digitResult(n)
  10. fmt.Println(n)
  11. }else {
  12. return false
  13. }
  14. }
  15. return true
  16. }
  17. func digitResult(n int) int {
  18. var res int
  19. for n>0{
  20. r :=n%10
  21. res +=r*r
  22. n =n/10
  23. }
  24. return res
  25. }
  26. func main() {
  27. fmt.Println(isHappy(2))
  28. fmt.Println(isHappy(19))
  29. }

无法实现快乐数的数字会最终走向无限循环中,比如数字2最终会形成如下循环
4
16
37
58
89
145
42
20
4
所以需要做一个存储判断是不是走向了无限循环中

image.png
image.png