Python 中的快乐数字

pythonserver side programmingprogramming更新于 2025/12/26 11:24:17

假设我们有一个数字 n。我们将检查它是否是一个快乐数字。众所周知,快乐数字是一个数字,从任何正整数开始,用其数字的平方和替换该数字,这个过程将重复,直到它变成 1,否则它将无限循环。当找到 1 时,这些数字将成为快乐数字。

因此,输入为 19,输出将为真,因为该数字是快乐数字。从 19 可以看出,我们将得到

12 + 92 = 82

82 + 22 = 68

62 + 82 = 100

12 + 02 + 02 = 1

为了解决这个问题,我们将遵循以下步骤 −

  • 在这里我们将使用动态规划方法,并使用递归来解决这个问题
  • 基本情况是,当 n = 1 时,返回 true
  • 当 n 已经被访问时,返回false
  • 将 n 标记为已访问
  • n := n 作为字符串,l := n 中所有数字的列表
  • temp := 所有数字的平方和
  • 使用参数 temp 和已访问列表递归返回函数

让我们看看下面的实现以便更好地理解 −

示例

class Solution(object):
   def isHappy(self, n):
      return self.solve(n,{})
   def solve(self,n,visited):
      if n == 1:
         return True
      if n in visited:
         return False
         visited[n]= 1
         n = str(n)
         l = list(n)
         l = list(map(int,l))
         temp = 0
         for i in l:
            temp += (i**2)
         return self.solve(temp,visited)
ob = Solution()
print(ob.isHappy(19))

输入

19

输出

True

相关文章


有用资源