function foo () {
foo();
}
// 무한 반복으로 콜스텍 오버 에러를 낸다.
// 반드시 탈출 조건을 만들어 주어야 한다.
자기 자신의 수에 -1 작은 수를 곱하는 것을 반복해서 1이 될 때까지 곱하는 것.
5! = 5 * 4 * 3 * 2 * 1 = 120 === ( 5 * 4! )
4! = 4 * 3 * 2 * 1 = 24 === ( 4 * 3!)
3! = 3 * 2 * 1 = 6 === ( 3 * 2!)
2! = 2 * 1 = 2 === ( 2 * 1!)
1! = 1 =1
5 * 4!
4 * 3!
3 * 2!
2 * 1!
n! = n * (n-1)!
function factorial (n) {
if(n === 1){
return 1;
} // 탈출조건이 된다
return n * factorial(n-1);
}
function factorial (n) {
let result = 1;
for(let i = n; i > 0; i--){
result = result * n;
}
return result;
}
앞의 두수의 합이 다음번 수열의 값.
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946...
n === (n - 1) + (n - 2)
fib(n) === fib(n -1) + fib(n - 2)
n > 1
fib(0) === 0
fib(1) === 1
function fibonacci (n) {
// n === (n - 1) + (n - 2)
if(n === 0){
return 0;
}
if(n === 1){
return 1;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
function logAll (el) {
// TO DO..
}
logAll(document.body);
function logAll (el) {
console.log(el.tagName);
if(el.children.length > 0) {
for(var i = 0; i < el.children.length; i++) {
logAll(el.children[i]);
}
}
}
logAll(document.body);
function getElementsByClassName (el) {
// TODO..
}
function getElementsByClassName (className) {
let arr = [];
let body = document.body;
function recursion(el) {
if(el.classList.contains(className)){
arr.push(el);
}
if(el.children.length > 0){
for(let i =0; i < el.children.length; i++){
recursion(el.children[i]);
}
}
}
recursion(body);
return arr;
}
getElementsByClassName(className);