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()
ç”案 0 :(得分:3)
ä¸ï¼Œå®ƒä¸æ˜¯é€’å½’çš„ï¼Œå› ä¸ºä½ æ²¡æœ‰ä»Žå‡½æ•°å†…éƒ¨è°ƒç”¨å‡½æ•°ã€‚
å°è¯•ï¼š
def sumdigits(number):
if number == 0:
return 0
else:
return (number%10) + sumdigits(number//10)
ç”案 1 :(得分:2)
递归是一ç§ç¼–程或编ç 问题的方法,其ä¸å‡½æ•°åœ¨å…¶ä½“内调用自身一次或多次。
通常,它返回æ¤å‡½æ•°è°ƒç”¨çš„返回值。如果函数定义满足递归æ¡ä»¶ï¼Œæˆ‘们将æ¤å‡½æ•°ç§°ä¸ºé€’归函数。
递归函数必须终æ¢æ‰èƒ½åœ¨ç¨‹åºä¸ä½¿ç”¨ã€‚ 通常,它会终æ¢ï¼Œå¦‚æžœæ¯æ¬¡é€’归调用,问题的解决方案都会缩å°å¹¶ç§»å‘基本情况。 基本情况是一ç§æƒ…况,å¯ä»¥åœ¨æ²¡æœ‰è¿›ä¸€æ¥é€’归的情况下解决问题。 (如果在调用ä¸ä¸æ»¡è¶³åŸºæœ¬æƒ…况,则递归å¯èƒ½å¯¼è‡´æ— é™å¾ªçŽ¯ï¼‰ã€‚ 对于这个问题,“基本情况â€æ˜¯ï¼š
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
ç”案 2 :(得分:1)
对于è¦é€’归的函数,它必须在自身内部调用。æ¤å¤–,由于您当å‰çš„ä¸æ‰§è¡Œæ¤æ“ä½œï¼Œå› æ¤ä¸æ˜¯é€’归的。
这是一个简å•çš„递归函数,å¯ä»¥æ‰§è¡Œæ‚¨æƒ³è¦çš„æ“作:
>>> def sumdigits(n):
... return n and n%10 + sumdigits(n//10)
...
>>> sumdigits(457)
16
>>> sumdigits(45)
9
>>> sumdigits(1234)
10
>>>
ç”案 3 :(得分:0)
ä½ æ²¡æœ‰åšä¸€ä¸ªé€’å½’æ¥éª¤ï¼ˆåœ¨é‡Œé¢è°ƒç”¨sumdigits()
)ï¼
ç”案 4 :(得分:0)
æˆ‘ç›¸ä¿¡è¿™å°±æ˜¯ä½ è¦æ‰¾çš„东西:
def sum_digits(n):
if n < 10:
return n
else:
all_but_last, last = n // 10, n % 10
return sum_digits(all_but_last) + last
ç”案 5 :(得分:0)
虽然递归是一ç§èªæ˜Žçš„æ–¹æ³•ï¼Œä½†ç”±äºŽæ€§èƒ½å’Œé€»è¾‘åŽŸå› ï¼Œæˆ‘é€šå¸¸ä¼šè¿œç¦»å®ƒï¼ˆå®ƒå¯èƒ½å¾ˆå¿«å˜å¾—å¤æ‚)。我知é“è¿™ä¸æ˜¯ä½ è¦æ‰¾çš„ç”案,但我个人åšæŒè¿™æ ·æˆ–类似的循环:
def sumdigits(number):
return sum(map(int, str(number)))
ç¥ä½ 好è¿ï¼
ç”案 6 :(得分:0)
我最近æ£åœ¨ç ”究这个项目,希望它能对以åŽçš„人有所帮助
def digit(n):
p=0
for i in str(n):
p += int(i)
return p
def superDigit(n):
if n==0:
return 0
return digit(digit(digit(digit(n))))
ç”案 7 :(得分:0)
这是对一系列整数数å—求和的解决方案,该解决方案使用三元è¿ç®—符与递归和一些仅在第一次通过函数时å‘生的å‚数检查。一些 Python ç¼–ç 人员å¯èƒ½è®¤ä¸ºè¿™ä¸å¤ª Pythonic(使用三元表达å¼ï¼‰ï¼Œä½†æ˜¯ï¼Œå®ƒæ¼”示了如何使用递归,回ç”原始问题,åŒæ—¶å¼•å…¥ä¸‰å…ƒè¿ç®—符将一些多行 if/else è¯å¥ç»„åˆæˆç®€å•çš„æ•°å¦ã€‚
注æ„:
int * True = int,而 int * False = 0
float * True = Float,而 float * False = 0
"Text" * True = "Text",但是 "Text" * False = "";但也
"Text" * 0 = "",而 "Text" * 3 = "TextTextText"
“文本†* 浮点数 = 错误;而 "Text" * int = Error
å•è¡Œ if/else è¯å¥å¦‚下: Expression_if_True if Condition_to_Check else Expression_if_False
def digitSum2(n = 0, first = True):
if first:
first = False
if type(n) != int or n < 0:
return "Only positive integers accepted."
return (n * (n < 10) + (n % 10 + digitSum2(n // 10, first)) * (n >= 10)) if (n > 0) else 0