행복 번호를 찾는 프로그램을 작성하려고합니다. more info here. 이것은 학교 과제가 아니지만 필자는 Python 2.7을 연습하려고하고 있습니다. 기본적으로 모든 자릿수를 제곱 할 필요가 있기 때문에 재귀가 중요한 부분입니다. 내 코드에서 필자는 재귀를 사용하여 실행을 계속하고 기본 사례를 가지고 있지만 작동하지만 어떤 이유로 함수를 호출하더라도 재귀가 발생하지 않습니다. 버그 테스트 인 첫 번째 숫자의 자릿수를 반환하고 None을 반환하면 실행이 중지됩니다. 무엇이 문제입니까?파이썬 : 재귀 반환 값 없음
num = raw_input('Pick a positive integer that you want to check for a happy number')
def happyn(number,second,third,fourth):
if len(number) == 2:
go = int(number[0])**2 + int(number[1])**2
elif len(number) == 3:
go = int(number[0])**2 + int(number[1])**2 + int(number[2])**2
elif len(number) == 4:
go = int(number[0])**2 + int(number[1])**2 + int(number[2])**2 + int(number[2]**2)
if len(number) == 1 and int(number) == 1 or int(number) == 7:
return True
elif len(number) == 1:
return False
else:
print go
go = str(go)
go1 = go[0]
print go1
if len(go) == 1:
go1 = go[0]
happyn(go1,0,0,0)
elif len(go) == 2:
go1 = go[0]
go2 = go[1]
happyn(go1,go2,0,0)
elif len(go) == 3:
go1 = go[0]
go2 = go[1]
go3 = go[2]
happyn(go1,go2,go3,0)
elif len(go) == 4:
go1 = go[0]
go2 = go[1]
go3 = go[2]
go4 = go[4]
happyn(go1,go2,go3,go4)
print happyn(num,0,0,0)
'= INT (번호 [0]) ** 2 + INT (번호 [1]) ** 2 + INT (번호 [2]) ** 2 + INT (번호 [2 가지 ] ** 2)'는 버그처럼 보입니다. 이 모든 경우를 대체하기 위해'go = sum (int (x) ** 2 for x) '를 사용하라. –