- Pascal 삼각형 구하기 과제
with https://jmpop.tistory.com/69
.py 재귀함수(파스칼의 삼각형)
같이한 팀원 : https://sogummi.tistory.com/ idea n번째 list의 길이는 n이다 list(n+1)번째의 m(>1)번째 요소는 list(n)의 m-1번째 요소와 m번째 요소를 더한것이다. list의 마지막은 1이다. 발전된 코드 def pas(list, l
jmpop.tistory.com

def pascal(list,n):
if n > 1:
answer = []
answer.append(1)
for i in range(len(list)-1):
answer.append(list[i]+list[i+1])
answer.append(1)
n -= 1
return pascal(answer,n)
if n == 1:
return list
start_list=[1]
a=pascal(start_list, 8)
print("real_result",a)
for i in range(1, 9):
result = pascal(start_list, i)
print(f"{i}번째 단계: {result}")
파스칼 삼각형을 계산하기 위해 '재귀 함수'를 이용하여 구현하는 것이 이번 과제의 핵심
1) pascal(list, n) : list는 이전 단계의 파스칼 삼각형을 저장하는 리스트, n은 계산할 파스칼 삼각형의 크기
=> 재귀적으로 호출되며, 호출될 때마다 list가 업데이트 되며 n은 감소
2) if n > 1 인 경우, 이전 파스칼 list에서 새로운 파스칼 list를 계산한다. answer리스트에 이전 list의 왼쪽 값 + 오른쪽 값을 저장하여 새로운 파스칼 list를 업데이트 하고 n을 -1씩 감소시킨다. 그 후에 다시 pascal()함수를 재귀 호출
3) if n==1 인 경우, 계산이 완료되었기 때문에 list를 반환해준다.
위 코드의 출력결과는
real_result [1, 7, 21, 35, 35, 21, 7, 1]
1번째 단계: [1]
2번째 단계: [1, 1]
3번째 단계: [1, 2, 1]
4번째 단계: [1, 3, 3, 1]
5번째 단계: [1, 4, 6, 4, 1]
6번째 단계: [1, 5, 10, 10, 5, 1]
7번째 단계: [1, 6, 15, 20, 15, 6, 1]
8번째 단계: [1, 7, 21, 35, 35, 21, 7, 1]
'내일배움캠프 > 내일배움캠프 TIL' 카테고리의 다른 글
내일배움캠프 TIL 37일차 (WSL에서 폴더열기) (2) | 2023.05.02 |
---|---|
내일배움캠프 TIL 36일차 (윈도우에서 WSL사용하기) (4) | 2023.05.02 |
내일배움캠프 TIL 34일차 (1) | 2023.04.28 |
내일배움캠프 TIL 33일차 (2) | 2023.04.27 |
내일배움캠프 TIL 32일차 (0) | 2023.04.26 |
- Pascal 삼각형 구하기 과제
with https://jmpop.tistory.com/69
.py 재귀함수(파스칼의 삼각형)
같이한 팀원 : https://sogummi.tistory.com/ idea n번째 list의 길이는 n이다 list(n+1)번째의 m(>1)번째 요소는 list(n)의 m-1번째 요소와 m번째 요소를 더한것이다. list의 마지막은 1이다. 발전된 코드 def pas(list, l
jmpop.tistory.com

def pascal(list,n):
if n > 1:
answer = []
answer.append(1)
for i in range(len(list)-1):
answer.append(list[i]+list[i+1])
answer.append(1)
n -= 1
return pascal(answer,n)
if n == 1:
return list
start_list=[1]
a=pascal(start_list, 8)
print("real_result",a)
for i in range(1, 9):
result = pascal(start_list, i)
print(f"{i}번째 단계: {result}")
파스칼 삼각형을 계산하기 위해 '재귀 함수'를 이용하여 구현하는 것이 이번 과제의 핵심
1) pascal(list, n) : list는 이전 단계의 파스칼 삼각형을 저장하는 리스트, n은 계산할 파스칼 삼각형의 크기
=> 재귀적으로 호출되며, 호출될 때마다 list가 업데이트 되며 n은 감소
2) if n > 1 인 경우, 이전 파스칼 list에서 새로운 파스칼 list를 계산한다. answer리스트에 이전 list의 왼쪽 값 + 오른쪽 값을 저장하여 새로운 파스칼 list를 업데이트 하고 n을 -1씩 감소시킨다. 그 후에 다시 pascal()함수를 재귀 호출
3) if n==1 인 경우, 계산이 완료되었기 때문에 list를 반환해준다.
위 코드의 출력결과는
real_result [1, 7, 21, 35, 35, 21, 7, 1]
1번째 단계: [1]
2번째 단계: [1, 1]
3번째 단계: [1, 2, 1]
4번째 단계: [1, 3, 3, 1]
5번째 단계: [1, 4, 6, 4, 1]
6번째 단계: [1, 5, 10, 10, 5, 1]
7번째 단계: [1, 6, 15, 20, 15, 6, 1]
8번째 단계: [1, 7, 21, 35, 35, 21, 7, 1]
'내일배움캠프 > 내일배움캠프 TIL' 카테고리의 다른 글
내일배움캠프 TIL 37일차 (WSL에서 폴더열기) (2) | 2023.05.02 |
---|---|
내일배움캠프 TIL 36일차 (윈도우에서 WSL사용하기) (4) | 2023.05.02 |
내일배움캠프 TIL 34일차 (1) | 2023.04.28 |
내일배움캠프 TIL 33일차 (2) | 2023.04.27 |
내일배움캠프 TIL 32일차 (0) | 2023.04.26 |