使用python查找整数位数和的递归函数

2024-09-24 22:28:32 发布

您现在位置:Python中文网/ 问答频道 /正文

def sumdigits(number):
  if number==0:
    return 0
  if number!=0:
    return (number%10) + (number//10)

这就是我的功能。但是它只给出2位数的正确和。我怎么能得到任何数字的和。 我的函数也算递归吗

def main():
    number=int(input("Enter a number :"))
    print(sumdigits(number))
main()

Tags: 函数功能numberinputreturnifmaindef
3条回答

要使函数递归,它必须在自身内部调用自己。此外,由于当前的一个没有这样做,所以它不是递归的。

下面是一个简单的递归函数,可以满足您的需要:

>>> def sumdigits(n):
...     return n and n%10 + sumdigits(n//10)
...
>>> sumdigits(457)
16
>>> sumdigits(45)
9
>>> sumdigits(1234)
10
>>>

递归是对问题进行编程或编码的一种方法,在这种方法中,函数在其主体中调用自己一次或多次。

通常,它返回这个函数调用的返回值。如果函数定义满足递归条件,我们将此函数称为递归函数。

递归函数必须终止才能在程序中使用。 通常,如果每次递归调用问题的解决方案都被缩小并移向基本情况,那么它就会终止。 基本情况是这样一种情况,在这种情况下,不需要进一步递归就可以解决问题。(如果调用中没有满足基本情况,递归可以导致无限循环)。 对于这个问题,“基本情况”是:

if number == 0:
    return 0

一个简单的递归函数,用于对数字的所有位数求和,它是:

def sum_digits(number):
    """ Return the sum of digits of a number.
        number: non-negative integer
    """

    # Base Case
    if number == 0:
        return 0
    else:
        # Mod (%) by 10 gives you the rightmost digit (227 % 10 == 7), 
        # while doing integer division by 10 removes the rightmost 
        # digit (227 // 10 is 22)

        return (number % 10) + sumdigits(number // 10)

如果我们运行代码:

>>>print sum_digits(57) # (5 + 7) = 12 
12
>>>print sum_digits(5728) # (5 + 7 + 2 + 8) = 22
22

不,它不是递归的,因为您没有从函数内部调用函数。

尝试:

def sumdigits(number):
  if number == 0:
    return 0
  else:
    return (number%10) + sumdigits(number//10)

相关问题 更多 >