2014-09-24 6 views
0

나는 주어진 수의 자리 합 caluclates 파이썬 2.7에서 함수 작성했습니다 :파이썬 2.7에서 반복 함수의 재귀 함수는 어떻게합니까?

def dig_sum(n): 
    s = 0 
    while n: 
     s = s + n % 10 
     n = n/10 
    return s 

을 지금 재귀 함수로 다시 작성하려고 :

def dig_sum(n): 
    s = 0 
    if n != 0: 
     s = n % 10 
     s += s 
     return dig_sum(n/10) 
    return s 

에 어떤 문제가 내 재귀 함수? 그런 기능을 수행 할 때 가장 좋은 방법은 무엇입니까? 미리 감사드립니다.

+0

- 항상 0을 반환합니다 – mdurant

+0

You 've 당신의 질문에 대한 좋은 답변을 얻었습니다. 그러나 앞으로 더 복잡한 질문을 시작할 때 더 나은 문제를 설명하면 더 나은 결과를 얻을 수 있습니다. 당신은 단순히 "내 기능에 무슨 문제가 있습니까?"라고 물었습니다. 오류, 예외 또는 잘못된 결과를 설명하는 대신 질문에 항상 이러한 세부 사항을 포함 시키십시오. – skrrgwasme

+0

1000 자리가 넘는 숫자에서이 코드를 실행하면 충돌이 발생합니다. 파이썬에서의 재귀는 코드가 없으면 코드가 복잡하지 않으면 피할 수 있습니다 (그렇지 않으면 CS 코드에만 해당). –

답변

5

재귀 함수는이

def dig_sum(n): 
    if n < 10:      # Handle single digits as your base case 
     return n 
    else: 
     return n%10 + dig_sum(n/10) # Add one's digit, then shift and continue 

테스트

>>> dig_sum(1001) 
2 

>>> dig_sum(12345) 
15 
2
def dig_sum(n): 
    if n != 0: 
     s = n % 10 
     return s + dig_sum(n/10) 
    else: 
     return 0 

print dig_sum(45) 

출력과 같을 것이다

9 
들에 추가가 외부 함수에 전달되지 않는 자리에서