재귀 함수

재귀 함수는 단어를 보고 어렵게 느끼실수도 있는데요 함수 안에서 자신의 함수를 호출 하는 것을 말한답니다.

, add라는 함수를 만들었다면 add라는 함수 안에 add라는 함수를 호출 하는것입니다.

또 한번 즉,

function add(){

add();

}

위와 같은거죠.

팩토리얼이란?

자기 자신의 수에 1 작은 수를 곱하고 또 1작은 수를 곱하고 해서 1작은 수가 1이 될때까지 곱하는 것입니다.

어떤 수를 예를 들어서 5라고 합시다.

설명이 이상할 수 있으니 예를 든다면요.

5x4x3x2x1 입니다.

이것이 팩토리얼(!) 이라고 합니다. 기호는 ! 입니다.

5! 이렇게 작성을 하며, 5!를 풀어라 한다면 5*4*3*2*1 이므로 120이 답입니다.

이렇게 해서 팩토리얼이 무엇인지 알게되었습니다.

그렇다면 10! 이것은 무엇일까요?

10*9*8*7*6*5*4*3*2*1 계산 하면 됩니다. ^-^* 답은 4,939,200 입니다.

그럼 함수 안에 자신의 함수를 호출하는 재귀함수에 대해서 알아 볼까요

그런데 이 재귀함수는 제가 제대로 이해를 하고 설명하는 것인지 좀 헤깔리지만 마땅히 흐름도가 표시된 자료도 찾기 힘들어서 제가 이해한 대로 설명을 해보겠습니다.

소스는 다음과 같습니다.

재귀 함수를 아래의 소스로 이해해 봅시다.

function factorial(fnum){

end_num = 1;

if(fnum == end_num) return end_num;

else return fnum*factorial(fnum-1);

}

document.write(factorial(3));

함수 호출

document.write(factorial(3));

함수 호출은 출력문과 함께 매개변수 3을 보내고 있습니다.

factroial함수는 매개변수로 3을 받습니다.

function factorial(fnum){

end_num = 1;

if(fnum == end_num) return end_num;

else return fnum*factorial(fnum-1);

}

document.write(factorial(3));

factroial 의 매개변수인 fnum3을 값으로 갖습니다. 그러므로 fnum=3인 상태 입니다.

end_num = 1이 있는 이유는

end_num = 1;

팩토리얼은 자신의 수가 1일 될때까지 곱셈을 합니다. 그러므로 끝나는 수가 1이기 때문에 end_num=1을 선언 합니다.

fnum end_num의 값이 같다면

if(fnum == end_num) return end_num;

end_num값은 1이고 fnum3입니다. fnum값이 1이된다면 end_num값을 반환 하라는 내용입니다.

fnumend_num과 같지 않을 경우는

else return fnum*factorial(fnum-1);

fnum*factroial(fnum-1)을 반환합니다. fnum3이라고 한다면,

3*factorial(2) 를 반환 하는것입니다. 그럼 이 부분은 함수 호출 부분으로 넘어가겠죠?

그런데 값을 넘겨 받았지만 호출문인 factroial(2)가 있기 때문에 함수는 호출 되어 2를 매개변수의 값으로 하고 else문을 만나서 2*factorial(1)을 반환하게 됩니다.

그렇다면 호출문인 factorial(3)3*2*factorial(1)인 상태가 됩니다. factorial(1)은 호출되어 end_num값과 같아서 1을 반환하게 되고

호출문은 3*2*1을 출력값으로 받게 되는 것입니다. 이해가 잘 되시는지요? ^^

잘 안되실것 같아서 다시 한번 설명을 해보겠습니다.

함수호출 factorial(3)을 실행

fnum값이 3이 되고 else문에 의해서 3*factorial(2)를 반환

3*factorial(2)에서 factorial(2)는 함수 호출 하고 매개변수값이 2이므로, else문을 만나서 2*factrorial(1)을 반환하고 1을 매개변수 값으로 해서 호출하고

end_numfnum이 일치하므로 if문을 만나서 1을 반환,

함수는 3*2*1을 반환하게 됩니다.

 

 

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>자바스크립트</title>

<script>

function factorial(fnum){

end_num = 1;

if(fnum==end_num) return end_num;

else return fnum*factorial(fnum-1);

}

document.write("!="+factorial(3));

</script>

</head>

<body>

</body>

</html>

 

결과값은 !=6  / 수고하셨습니다.

 

다른 일을 하면서도 투잡(알바/부업)으로 월급 만큰 수익이 됩니다.

아래 접속하셔서 상담받아 보시고 결정하세요 .(믿음의 재택부업회사)

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

자바스크립트 / 함수 만들기

 

먼저 function 라고 적어 줍니다. 그리고 함수의 이름을 적은후 괄호를 열고 닫고 그리고 대괄호를 열고 닫고 끝!!

function functionName(){

}

 

위와 같습니다. 그리고 {}안에 실행할 명령문을 적어주면 됩니다.

 

그리고 함수는 함수를 호출해줘야만 함수가 작동합니다. 즉 저렇게 작성만 하면 작동하지 않습니다.

 

함수 호출 하기

 

함수호출 하는 방법은 함수명() !

 

,

functionName();

입니다.

 

그럼 헬로우 월드를 출력하는 함수를 만들고, 그 함수를 호출을 해봅시다.

function hello(){

document.write("Hello World!!");

}

 

위와 같이 hello라는 함수를 만들고 헬로우 월드 출력문을 {}안에 넣어 줍니다.

 

그리고 함수호출은

hello();

 

위와 같이 작성하면 호출이 됩니다.

 

예문을 통해서 알아봅시다. 함수 호출문이 없는 소스 입니다.

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>자바스크립트</title>

<script>

function hello(){

document.write("Hello World!!");

}

</script>

</head>

<body>

</body>

</html>

 

이 소스를 웹에서 보기 버튼을 눌러 실행해 보시면 아무것도 출력이 안되는 것을 보실 수 있습니다.

 

그럼 이번엔 함수 호출문을 넣어서 테스트 해봅시다.

 

 

위의 예제를 실행해 보시면 출력문인 hello world가 보이실 것입니다.

 

아참 그리고 좋은 정보 하나 알려 드리겠습니다. 요즈음  많은 분들이 투잡을 하고 있는데 제가하고 있는 투잡입니다.

상담해 보시고자 하시면 제가 도와드릴 수 있습니다. 우선 상담을 받아보세요

[여기]를 누르시고 이름과 연락처로 상담신청을 하시면 자세히 설명을 받으실 수 있습니다.

그리고 그곳 저의 홈페이지 오른쪽에 보시면 전화번호가 있으니 연락주세요 감사합니다.

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

함수정의 함수선언,함수호출

 

함수 선언을 위해 funciton을 적은후 함수의 이름을 적어 줍니다. 그리고 괄호를 열고 닫고 그 후 대괄호를 열고 닫고 해주며 대괄호 안에 실행할 명령문들을 적습니다.

 

예를 들어 함수의 이름을 poly라고 해봅시다.

function poly(){

}

 위와 같이 function 후에 poly를 적고 괄호를 열고 닫고 그후 대괄호를 열고 닫고 합니다. 그럼 poly라는 함수가 생성된것입니다.

 

함수를 생성을 했는데 위와 같이 실행을 한다면 과연 실행이 될까요. 안됩니다. 함수를 따로 호출을 해야 하는데요 함수를 호출할때는 함수명(); 입니다.

 

함수 호출

함수명();

예를 들어 위와 같이 poly라는 함수를 만들었다면

poly(); <== 입니다.

  

소스를 통하여 테스트 해봅시다.

 

우선 함수를 만들어 봅시다. 함수는 hello world를 출력하는 함수 입니다.

function hello(){

document.write("Hello world");

}

 

아래의 소스는 함수는 만들었으나 함수를 호출하는 코드는 없습니다. 결과를 통하여 한번 체험 해보세요. 결과가 아무것도 안나오면 정상입니다.

 

<html>
<head>
<meta charset="utf-8" />
<title>자바스크립트</title>
<script>
function hello(){
    document.write("Hello world");
}
</script>
</head>
<body>
</body>
</html>
우선 함수를 만들어 봅시다. 함수는 hello world를 출력하는 함수 입니다.
function hello(){
document.write("Hello world");
}


아래의 소스는 함수는 만들었으나 함수를 호출하는 코드는 없습니다. 결과를 통하여 한번 체험 해보세요. 결과가 아무것도 안나오면 정상입니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>자바스크립트</title>
<script>
function hello(){
    document.write("Hello world");
}
</script>
</head>
<body>
</body>
</html>


이 예제 실행 & 수정

위의 소스를 타이핑 해보시거나 이 소스를 웹에서 보기 버튼을 눌러 테스트를 해보시면 결과 화면에 아무것도 안나오는 것을 알 수 있습니다.

그럼 다음의 함수 호출문을 사용하여 결과를 확인해 봅시다.
    hello();


위의 소스는 hello라는 함수를 호출하는 함수 입니다. 그럼hello라는 함수가 호출되므로 hello함수 안에 있는 출력문이 실행합니다.


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>자바스크립트</title>
<script>
function hello(){
  document.write("Hello world");
}
hello();
</script>
</head>
<body>
</body>
</html>

위 소스의 결과를 보면 hello함수가 작동하여 hello world라는 문구가 출력하는 것을 볼 수 있습니다.

 

 

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,