const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');
let n = Number(input[0]);
let arr = [0,1];
function R(n,arr) {
let len = arr.length;
if(len === n+1) {
console.log(sum);
return 1;
} else {
sum = arr[len-1] + arr[len-2];
arr.push(sum);
return R(n, arr);
}
}
R(n,arr);
선언적 프로그래밍처럼 냅다 이거해! 이렇게 작성한게 아니라 구구절절...이건..이렇게.... 하니까 오류발생 완전 뻘짓했다 이말^^
진짜 몇번 하고 안되니까 응 처음 배운거고 구글링 해. 해서 구글링해서 본 결과. 첨에 이해안되서 미쳐버리는줄 하지만 이해했지
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');
let n = Number(input[0]);
function fibonacci(n) {
if (n < 2) {
return n; //2보다 작은 수는 그 값을 리턴하므로 조건을 생성
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
console.log(fibonacci(n));
재귀는 선언적 프로그래밍방식으로 짜는 것!
선언적 프로그래밍은 목표를 선언하고 과정은 설명하지 않는 것이다.
재귀적으로 프로그래밍 한다는 것은
1. 종료조건, 2. 문제의 정의를 뙇 명시하고 표시하는 것
목표, 중간과정에 필요한 요소들만 명시하고 어떻게 하는지는 설명x
출발: 부산, 도착: 서울 이렇게 띡 주고 컴퓨터보고 알아서해~ 하는 격
일단 하다보면 아리송...알듯...말..듯...... 한 것이 좀 이해될 거 같으니 재귀문제 많이 풀어보자
F(10) = F(9) + F(8)
F(9) = F(8) + F(7)
.
.
.
이런식으로 계속 선언하는 것. 아니 근데 없는데 어케아아니다 ㅇ리단 정확히 이해는 안되도 느낌으로만 느끼자. 아자!^^