Code note/자바스크립트
점화식 등차수열, 등비수열, 팩토리얼, 피보나치 수열
코드노트
2022. 8. 21. 20:14
등차수열 : 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값이 계산되며 올라간다.