정의 - for문안에 for문을 사용한것을 다중 for문이라고 한다.
예를 들어 구구단을 만들고 싶다면
이런식으로 for문안에 for문을 넣어 간단하게 구구단을 만들수 있다.
다른예로 다중 for문을 이용하여 알고리즘 기초문제로 자주 나오는 별찍기예제를 연습해 보았다.
*
**
***
****
*****
let result = "";
for(let i=0; i < 5; i++){
for(let j=0; j <= i; j++){
result += "*"
}
result += "\n"
}
console.log(result)
우선 별을 5층으로 만들거니 for문으로 0~4까지 총 5행을 만들고 그안에 다중for문으로 j가 i와 같거나 작을시 *별을 하나 추가하도록 하고 j와i가 같아 지면, 이런 한 사이클이 끝나면 다음칸에 별을 찍도록 \n을 하였다.
*****
****
***
**
*
let result = "";
for(let i=5; i > 0; i--){
for(let j=0; j < i; j++){
result += "*"
}
result += "\n"
}
console.log(result)
기본 별찍기와 마찬가지로 코드를 짜고 i값을 5로 하고 1씩 줄어들게하여 별이 5개 => 1개가 될때까지 반복하여 주었다.
*
***
*****
*******
*********
let result = "";
for(let i=0; i < 5; i++){
for(let j = 4; j > i; j--){
result += ' ';
}
for(let k = 0; k <= (i2); k++){
result += "";
}
result += "\n"
}
console.log(result)
우선 첫번째 for문으로 전과같이 5행까지 만들고 공백이 들어갈 두번째 for문을 만들어 첫번째 칸에는 공백이 4칸이 나오고 다음 세번째 for문으로 첫번째 칸에 별이 1개 나오게 된다,
이를 반복하면 다음 두번째 칸에는 공백이 3개 별이 2개 증가한 3개가 나오게 된다.
이런식으로 5행까지 반복하면 가운데 별찍기가 완성된다.
정의 - 여러가지 데이터들의 묶음을 저장하고, 사용 방법을 정의한것이다.
자료구조를 배우면 좋은점
정의 - 재귀함수는 함수안에 자신의 함수를 다시 호출하는것을 말한다.
사용 예시
1부터 100까지의 수를 더한것을 3가지 방법으로 표현해보았다.
for문 반복문
let num = 0;
for(let i=0; i < 101; i++){
num += i
}
console.log(num)
수학공식
let n = 100;
console.log(n*(n+1)/2)
1부터 100까지 더하는 값을 구하는 수학 공식이다.
function f(n){
if( n <= 1 ){
return 1;
}
return n + f( n-1 );
}
console.log( f( 100 ) )
if문을 사용하여 값이 음수까지 가게되면 데이터가 너무 커져 maximum call stack 에러가 나오기 때문에 종료 조건을 1이하로 지정해 두었다.
return n + f( n-1 ) 재귀함수를 사용하여 종료조건이 되기전까지의 100이하의 모든 숫자를 더하였다.
재귀함수를 설명할 때 자주 언급되는 팩토리얼을 코드로 구해보았다.
팩토리얼은 자기자신에서 1 감소한 숫자들을 모두 곱한 값이다. (ex 5 팩토리얼 = 5 * 4 * 3 * 2 * 1)
function fac(n){
if(n == 1){
return 1;
}
return n * fac(n - 1);
}
console.log(fac(5))
위와 마찬가지로 if문을 사용하여 종료조건을 정하여 무한반복되지 않게 설정하였다.
return n * fac(n-1); 재귀함수를 사용하여 종료조건이 되기전까지 5이하의 모든 숫자를 곱하였다.