Python程序:求数字各位数之和直到结果为一位数


假设我们有一个正数n,我们将把它的所有位数加起来得到一个新的数字。现在重复此操作,直到它小于10。

因此,如果输入为9625,则输出将为4。

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

  • 定义一个方法solve(),它将接收n作为参数
  • 如果n < 10,则
    • 返回n
  • s := 0
  • l := ⌊log₁₀(n) + 1⌋ (底数为10的对数)
  • 当l > 0时,执行以下操作:
    • s := s + (n mod 10)
    • n := n / 10 的商
    • l := l - 1
  • 返回solve(s)

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

示例

在线演示

import math
class Solution:
   def solve(self, n):
      if n < 10:
         return n
      s = 0
      l = math.floor(math.log(n, 10) + 1)
      while l > 0:
         s += n % 10
         n //= 10
         l -= 1
      return self.solve(s)
ob = Solution()
print(ob.solve(9625))

输入

9625

输出

4

更新于:2020年10月7日

3K+浏览量

开启你的职业生涯

完成课程获得认证

开始学习
广告