Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- leetcode문제풀이
- til
- JS
- NPM
- lodash
- 자바스크립트 알고리즘
- 자바스크립트 문제
- leetcode
- Next.js13
- 자바스크립트 연결리스트
- 프론트엔드
- 리액트
- JavaScript
- 리액트쿼리
- react
- 제로베이스
- 자바스크립트 문제 풀이
- Baekjoon
- 프로그래머스
- CSS
- Next
- 자바스크립트코딩테스트
- 자바스크립트
- 알고리즘문제풀이
- next13
- 자바스크립트 문제풀이
- 타입스크립트
- stack문제
- HTML
- 자바스크립트 알고리즘 문제
Archives
- Today
- Total
코드노트
점화식 등차수열, 등비수열, 팩토리얼, 피보나치 수열 본문
등차수열 : s(1) = s(n-1) + t
ex) 등차수열 11,16,21, ...n?
// 11 + 5(n-1)
ex) 9,5,1, ...n?
// 9 - 4(n-1)
let result;
function forloop(s, t, number){
let acc = 0;
for(let i = 1; i <= number; i++){
if(i == 1) {
acc += s;
} else {
acc += t;
}
}
return acc;
}
result = forloop(시작하는 수, 공차, n번째 항)
console.log(n번째 항)
시작하는 수가 1일 때 s를 더해주고 그 외에는 공차인 t값을 더해준다.
이 등차수열을 재귀함수로 나타내려면 어떻게 해야할까?
그렇게 어렵지 않았다.
let result;
function recursive(s, t, number) {
//멈출 조건
if(number == 1) {
return s;
}
// 반복할 코드
return recursive(s, t, number - 1) + t;
}
result = recursive(3, 2, 5);
console.log(result); // 11
멈출조건을 for 문과 같이 number가 1이 되었을 때로 설정하고,
반복할 코드에서 -1씩 줄여가며 t 값을 더해준다.
등비수열 : s(1) = s(n-1) * t
등비수열은 등차수열에서 - 를 *로 바꿔주면 된다.
등차 수열은 두 수의 차
등비 수열은 두 수의 곱하기
팩토리얼 : s(1) = s(n-1) * n
ex) 5 == 5 * 4 * 3 * 2 * 1 == 120
function recursive(number) {
// 멈출 조건
if(number == 1) {
return 1
}
// 반복할 코드
return recursive(number - 1) * number;
}
console.log(recursive(5) // 120
number 값에서 -1 을 빼면서 곱하는 것을 반복한다. number가 1일 때 재귀함수를 멈추고 1을 반환한다.
피보나치 수열 : s(1) = s(n-1) + s(n -2)
function recursive(number) {
if(number == 1 || number == 0) {
return number
}
return recursive(number -1) + recurive(nubmer - 2);
}
console.log(recursive(5)); // 5
// f(5) = f(4) / 3 + f(3) / 2 = 5
// f(4) = f(3) / 2 + f(2) / 1 = 3
// f(3) = f(2) / 1 + f(1) / 1 = 2
// f(2) = f(1) / 1 + f(0) / 0 = 1
// f(1) = 1
number가 1일 때는 1, 0일 때는 0이 반환되면서 f값이 계산되며 올라간다.
'Code note > 자바스크립트' 카테고리의 다른 글
자바스크립트 연결리스트(Linked List)/이중연결(Double) (0) | 2022.08.30 |
---|---|
자바스크립트 프로토타입 이해 (0) | 2022.08.26 |
프로그래밍 기본 정리 (0) | 2022.08.18 |
순열 permutation jabascript 재귀함수 이해하기 (0) | 2022.08.16 |
javascript for of, for in 차이점 정리 (0) | 2022.08.12 |