1
2
3
4
5
6
7
8
9
10
11
12
13
14
n = int(input())
def woonum(num):
if num==1:
print(num)
return
else:
print(num)
if num%2==1:
return woonum(int(num*3+1))
else:
return woonum(int(num/2))
woonum(n)
코테처음부터 하면서 유형별로 파는데 재귀는 이제 지겨운 수준…..
처음 값이 들어와서 n이 홀수면 n*3+1을하고 짝수면 2를 나누어 줍니다. 그리고 이를 계속 출력하기
n이 1이라면 1을 출력하고 끝내고 아니라면 계속 재귀로 불러 와야지요
이제 순서대로 출력을 했는데 이번에는 반대로 역순 출력을 하게 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
n = int(input())
lis=[]
def woonum(num):
global lis
if num==1:
lis.append(num)
return lis
else:
lis.append(num)
if num%2==1:
return woonum(int(num*3+1))
else:
return woonum(int(num/2))
def stack(num):
if len(num)!=0:
print(num.pop())
return stack(num)
else:
return
stack(woonum(n))
크게 다른 것도 없습니다. 리스트에다가 쭉 저장하시고 슬라이싱으로 역순 출력하셔도되고
이번에는 스택을 이용한 함수를 하나 만들었습니다. 스택에 내용이 있다면 pop로 뱉어내고 재귀 호출해서 스택이 빌때까지 반복적으로 호출하게 하는 것입니다.
Comments powered by Disqus.