재귀 함수 연습 -1

·2022년 5월 25일
0

입력받은 값을 짝수일때 2로 나누고, 홀수일때 3으로 나눠서 나눈 횟수를 반환하는 함수

문제코드 )

Fail Code

def solution(n,count):
    if n <= 1:
        print(count)
        return count
    else :
        if n % 2 == 0:
           solution(n / 2,count+1)
        else:
           solution(n // 3,count+1)

    return num

print(solution(230,0))

위 코드는 실패코드이다..
count는 잘 되었지만 최종 반환에 return을 해주지 않아 None이 출력되었다.
이는 내가 재귀구조를 제대로 습득하지 못해서 일어난 사태로
마지막에서 return을 시켜준 count를 담지 못했기 때문이었다.
재귀를 실행시켜주는 함수 앞에 return으로 최종반환 해주어야 한다

 return solution(n // 3,count+1) 

하지만 아래와 같이 푸는게 문제의 의도였다.

def solution(n,count):
    if n <= 1:
        return 0
    else :
        if n % 2 == 0:
           return solution(n / 2) +1
        else:
           return solution(n // 3) +1

print(solution(230,0))

이렇게 하면 종료시점에서 0을 반환하고 재귀가 실행된 만큼 +1로 스택을 쌓아가며 최종 횟수를 반환해준다.

profile
나 예인쓰, 응애인디

0개의 댓글