首页 文章

RECURSIVE函数,用于对输入的数字求和

提问于
浏览
-2

试着写一段代码来总结一个数字的数字 . 另外我应该补充一点,我希望程序能够对数字求和,直到总和只有1位数 .

例如,如果从1969开始,它应首先添加1 9 6 9以获得25.由于值25具有多于一个数字,因此应重复该操作以获得7作为最终答案 .

只是想知道我怎么能把它拉下来,也可能让它递归 . 这就是我到目前为止所拥有的

def sum_digits3(n):
     r = 0
     while n:
         r, n = r + n % 10, n // 10
     return r

2 回答

  • 3

    在字符串和整数之间来回转换,使用sum() .

    >>> def foo(n):
        n = str(n)
        if len(n) == 1:
            return int(n)
        return foo(sum(int(c) for c in n))
    
    >>> foo(1969)
    7
    >>>
    

    def foo(n):
        n = str(n)
        if len(n) == 1:
            return int(n)
        return foo(sum(int(c) for c in n))
    
  • 1

    它就像明确涉及递归一样简单 .

    def sum_digits3(n):
        r = 0
        while n:
            r, n = r + n % 10, n // 10
        if len(str(r))>1:
            return sum_digits3(r)
        return r
    

    但我必须承认,我将阅读可疑狗的链接 . 而wwii的答案比我的聪明 .

相关问题