2월 22일 공부일기 #
이머시브 코스 첫날.. 무난히 흘러가긴했으나.. 원래 폭풍전야는 항상 고요한법이다.
오늘의 주제는 피보나치수열.. '구조 분해 할당' 이다..
function fibonacci() {
let x = 0;
let y = 1;
let z = 0;
return function getNext() {
[z, x, y] = [x, y, x + y];
let a = x , b = y, c = x+y
z = a, x=b, y=c
console.log('z :', z, 'a :', a, 'x :', x, 'b :', b, 'y :', y , 'c :', c)
// z=fibo(n-2), x=fibo(n-1), y=fibo(n-2)+fibo(n-1)
return z;
};
}
let fun = fibonacci();
for (let i = 0; i < 10; i++) {
console.log(fun());
}
코드는 이렇다. 어렴풋 구조분해 할당의 기본 개념은 이해하고 있었으나,
피보나치 수열에 적용하기엔 내 이해가 상당히 부족했다.
대략 인택님의 설명덕분에 윤곽은 잡게되었는데,
[z,x,y] = [x,y,x+y] 부분이 주요 내용 이야기였다.
그러니까 '구조 분해 할당' 개념에 의하면
z = x, x = y, y = x+y 개념이 되는데.. 그것이 좀처럼 이해가 가질 않았던 것이다.
[z,x,y] 에서의 x와 y는 각각 y값과 x+y값이 되므로 바로 다음값과 그 다음값을 할당 한다고 한다.
fibo(0), fibo(1) 같은 피보나치수열의 기본 값을 가지고,
z는 현재값이자 나머지 값이며 가장 작은 번호를 줘서 z를 내보낸다고 하였다.
바로 사용안하고 채울것이라 초기화 시켰었고 중요한건 x와 y..
초기에는 0 그다음은 1, 그다음은 1 그다음은 2
[0,1,1] , [1,1,2] ,[1,2,3], [2,3,5]
그단계의 것은 그 단계의 것으로..
구조분해할당으로 이렇게 나타낼수도있다..!
Author And Source
이 문제에 관하여(2월 22일 공부일기 #), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@corepen_/2월-22일-공부일기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)