삼각형을 그리는 규칙은 다음과 같다.
-
숫자가 들어갈 칸을 첫 번째 줄에는 1개, 두 번째 줄에는 2개, 세 번째 줄에는 3개 이런 식으로 한 줄씩 내려가면 한 칸씩 늘어나게 정삼각형 모양으로 만든다.
-
첫 번째 줄과 두 번째 줄의 3칸에는 1을 쓴다.
-
세 번째 줄부터는 줄의 양쪽 끝 칸에는 1을 쓰고 나머지 칸에는 바로 윗줄에 위치한 칸 중 해당 칸과 인접해 있는 두 칸의 숫자를 더해서 그 값을 쓴다.
위와 같은 규칙을 재귀함수를 이용해서 풀어보려고 했습니다
def Pascal(n):
if n == 1:
return [1]
else:
prev = Pascal(n-1)
return [1]+[prev[i]+prev[i+1] for i in range(len(prev)-1)]+[1]
이제 삼각형은 1로 시작해서 1로 끝나고 이제 그 사이에 있는 수는 해당칸의 위층에 있는 왼쪽과 오른쪽칸에 있는 수를 더하면 된다는점을 기억해서 특정 층수를 줬을때 그 층수에서 1층을뺀거를 계산을 하게하고 이제 재귀로 불러온코드에서는 특정층수에서 1층을 뺀거에서 한번더 1층을 빼가지고 1층부터 특정 층수 까지 계산을 할수있게 하였습니다
코드에서 1인 경우에는 [1] 만 출력이되고 2일경우에는 for문을 돌리지못하기때문에 [1,1] 3층에서는 2층의 [1,1]을 더해서 [1]+[2]+[1] 이나와서 [1,2,1] 이거를 재귀를 통해 원하는 층수만큼 계산을해서 정답이 나오게했습니다
'내일배움 캠프 > TIL' 카테고리의 다른 글
vue를 이용해서 게시글 띄우는 코드 바꾸기 (0) | 2023.05.02 |
---|---|
fetch api를 이용해서 서버에서 데이터 가져오기 (0) | 2023.04.27 |
createsuperuser 오류 발생... (0) | 2023.04.25 |
2023 04 24 poetry가상환경 설정중 생긴 오류 (1) | 2023.04.24 |
poetry 가상환경 만들기 (0) | 2023.04.21 |