백준 10870번-JS

yugyeongKim·2021년 10월 27일
0

백준

목록 보기
26/52
post-custom-banner

- 처음에 작성한 코드(런타임에러 발생)

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)
.
.
.
이런식으로 계속 선언하는 것. 아니 근데 없는데 어케아아니다 ㅇ리단 정확히 이해는 안되도 느낌으로만 느끼자. 아자!^^

post-custom-banner

0개의 댓글