코드노트

점화식 등차수열, 등비수열, 팩토리얼, 피보나치 수열 본문

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값이 계산되며 올라간다.