JavaScript 반복 소개
7355 단어 javascript
Gif from Giphy
무엇이 귀속입니까?
만약 당신이 구글에서'귀속'을 검색한다면, 매번 "당신의 뜻은 귀속입니까?"라는 메시지를 받을 것입니다.Do you mean 링크를 클릭할 때마다 같은 내용이 다시 표시됩니다.이것이 바로 귀속의 진정한 의미이다. 한 번 또 한 번 어떤 물건을 호출하는 것이다.
컴퓨터 프로그래밍에 대해 말하자면, 귀속 함수는 어떤 퇴출 조건을 만족시킬 때까지 스스로 호출되는 함수이다.그렇지 않으면 무한 순환에 빠지거나 JavaScript에서 호출 스택이 넘쳐납니다.우리는 그것을 더욱 잘 이해하기 위해 예를 하나 봅시다.
우리는 모두 계승이 무엇인지 안다.만약 우리가 숫자 자체를 그것보다 작은 값과 곱하기를 계속한다면, 우리는 숫자의 곱하기를 얻을 것이다.
예를 들어 숫자 3의 곱셈은 3*2*1=6이다.
이것은 숫자 곱셈을 되돌려주는 함수입니다.
function factorial(r) {
if(r <= 0) return 1;
else return r*factorial(r-1);
}
console.log(factorial(3)); //6
우리는 매개 변수 r로 숫자를 전달합니다. 이것은 귀속 함수입니까?else 조건을 보면, 종료 조건, 즉 r<=0과 일치할 때까지 함수 자체를 호출하는 것을 발견할 수 있습니다.순환을 사용하면 같은 효과를 얻을 수 있다고 상상할 수 있다.네가 옳다.여기는 순환을 사용하는 같은 함수입니다.
function factorial(r) {
let factor = 1;
for(let i = r; i > 1; i--) {
factor *= i;
}
return factor;
}
console.log(factorial(3)); //6
반대로 이런 작은 함수에 대해 순환을 사용하는 것이 더 좋은 선택이 될 것이다.JavaScript에서는 일반적으로 여러 번 호출된 함수보다 순환을 실행합니다.귀속 함수의 시간 복잡도는 더욱 높아질 것이다.그러나 순환은 가치가 없는 경우가 많다.그것들은 기능을 더욱 복잡하게 한다.그리고 어떤 귀속 함수도 순환으로 실현할 수 있다.이제 우리는 귀속 함수가 무엇인지 알게 되었다. 우리는 계속 스스로 귀속 함수를 구축할 것이다.
반복 함수 만들기
귀속 함수를 사용할 때 기억해야 할 가장 중요한 것은 종료 조건을 성명하는 것이다.그렇지 않으면, 우리의 함수는 호출 창고에 넘칠 것입니다.
우리는 어떻게 중지 조건을 성명합니까?가장 간단한 것은 우리가if문장에 넣을 수 있다는 것이다.
이 예에서, 우리가 주어진 범위의 합을 되돌려 주는 귀속 함수를 작성해야 한다고 가정하자.따라서 만약에 우리가 3을 전달한다면, 그것은 1에서 3까지의 범위의 합, 즉 1+2+3=6을 출력할 것이다.
단계 1: 함수 이름을 선언합니다.범위는 매개변수를 사용하여 지정됩니다.필요하면 화살표 함수를 마음대로 사용할 수 있습니다.
function sumRange(r){
}
2단계: 성명 중지를 선언합니다.우리는 이 함수가 언제 종료되기를 희망합니까?우리의 범위가 0일 때, 맞습니까?
function sumRange(r) {
if(r <= 0) return 0;
}
3단계: 마술이 발생하는 논리.
우리는 여기서 무엇을 실현하고 싶습니까?범위가 0으로 바뀔 때까지 순환 중 (현재 범위 + (범위 -1) 을 실행하고 싶습니다.우리는 r에서 현재 범위를 얻었습니다. 우리는 어떻게 (범위-1)을 얻었습니까?우리는 매개 변수를 (r-1) 로 전달함으로써 이 함수를 반복적으로 호출합니다.
function sumRange(r) {
if(r <= 0) return 0;
return r+sumRange(r-1);
}
기능 프로세스:
function sumRange(r){
}
function sumRange(r) {
if(r <= 0) return 0;
}
function sumRange(r) {
if(r <= 0) return 0;
return r+sumRange(r-1);
}
sumRange(3);
3
+ sumRange(3-1)
의 값을 반환합니다. return 3 + sumRange(2);
2
이다.따라서 반환됩니다 2 + sumRange(2-1)
return 2 + sumRange(1);
1
입니다.따라서 반환 sumRange
은 (1-1)
이 됩니다. return 1 + sumRange(0);
범위가 0으로 바뀌면 if 조건이 실행되고 0으로 되돌아옵니다.현재 우리의 모든 함수 호출은 하나의 값을 되돌려주었고, 모든 것이 전개되기 시작할 것이다.맨 안쪽의 함수가 먼저 되돌아옵니다.
따라서
sumRange(0)
은 0으로 돌아갑니다.sumRange(1)
또는 1 + sumRange(0)
1 + 0 = 1
또는 sumRange(2)
2 + sumRange(1)
은2 + 1 + 0 = 3
또는sumRange(3)
으로 돌아갈 것입니다. 우리는 답을 얻었습니다.하면, 만약, 만약...😊. 나는 당신이 귀속의 작업 원리와 귀속 함수를 어떻게 작성하는지에 대해 기본적인 이해를 가지고 있기를 바랍니다.
Reference
이 문제에 관하여(JavaScript 반복 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nemo011/introduction-to-recursion-in-javascript-1e7a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)