파이썬 오일러 프로젝트에서 55번 재귀함수 질문이요

조회수 487회
def func(list,n):
    list1 = []
    for i in list:
        int1 = Lychrel(i)
        if symmetry(int1) == False:
            list1.append(int1)
    if n > 0:
        return func(list1,n-1)
    else:
        return len(list1)

오일러 프로젝트에서 55번 문제를 풀기는 했는데 재귀함수 모양이 뭔가 어색해서 그런데 특정 함수를 50번 호출하고 결과값을 받을려고 하는데 위 함수에 n에 50 넣는 방법 말고 다른 깔끔하게 함수를 작성하는 방법이 있을까요?

1 답변

  • from functools import lru_cache
    
    
    # @lru_cache
    def lycrhrel(x: str, n: int) -> int:
        rev_sum = int(x) + int(x[::-1])
        n += 1
        x = str(rev_sum)
        print(f"   {x} {n} >", end="")
        if x == x[::-1]:
            print(f" !! {x} {n} !! |")
            return n
        if n > 50:
            print(" !!!! ")
            return 51
        return lycrhrel(x, n)
    
    
    for n in range(1, 1000, 137):
        k = lycrhrel(str(n), 0)
        # print()
        print(n, k)
        print("----")
    
    
       2 1 > !! 2 1 !! |
    1 1
    ----
       969 1 > !! 969 1 !! |
    138 1
    ----
       847 1 >   1595 2 >   7546 3 >   14003 4 >   44044 5 > !! 44044 5 !! |
    275 5
    ----
       626 1 > !! 626 1 !! |
    412 1
    ----
       1494 1 >   6435 2 >   11781 3 >   30492 4 >   59895 5 > !! 59895 5 !! |
    549 5
    ----
       1372 1 >   4103 2 >   7117 3 > !! 7117 3 !! |
    686 3
    ----
       1151 1 >   2662 2 > !! 2662 2 !! |
    823 2
    ----
       1029 1 >   10230 2 >   13431 3 > !! 13431 3 !! |
    960 3
    ----
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)