1. What is recursion?If a function can call itself internally, then this function is recursive. Simple understanding: a function calls itself internally, and this function is a recursive function. As shown below: function fn(){ fn(); } fn(); This function is a recursive function. When we print it directly, it will: I found a printing error. Why? Because recursive functions have the same effect as loops. When there is no return value given to him, it will continue in an endless loop. So, we know: Since recursion is prone to stack How to write a correct recursive function? Take the above code as an example: for example, if we want to print 'hello' five times, we should write it like this: var num = 1; function fn(){ console.log('Hello'); if(num == 5){ return; } num++; fn(); } fn(); The print result is: Now that we know what recursion is, let’s take a look at how to use recursion to solve problems! 2. Solve math problems using recursion1. Find the factorial of 1 * 2 * 3 * 4 …*nThe code is as follows: function fn(n){ if(n == 1){ return 1; } return n*fn(n-1); } console.log('The factorial of 1-20 is: '+fn(20)); console.log('The factorial of 1-10 is: '+fn(10)); console.log('The factorial of 1-5 is: '+fn(5)); The print result is: 2. Find the Fibonacci sequence The Fibonacci sequence, also known as the "rabbit sequence", refers to a sequence of numbers The code is as follows: function fb(n){ if(n === 1 || n === 2){ return 1; } return fb(n-1) + fb(n-2); } console.log('The value of the third Fibonacci number is: '+fb(3)); console.log('The value of the 10th Fibonacci number is: '+fb(10)); The print result is: 3. Use recursion to find the corresponding data object Return the corresponding data object according to There are objects like this: var date = [{ id:1, name:'Electrical appliances', goods:[{ id: 11, gname:'mobile phone' },{ id: 12, gname: 'Computer' }] },{ id:2, name:'clothing', goods:[{ id : 21, gname:'pants' },{ id : 22, gname : 'coat' }] },{ id : 3, name: 'Food' }]; Now we need to return the corresponding data object by inputting First, we can use for...Each() to traverse the array and get each value, as shown below: function getId(array,id){ array.forEach(function(value){ console.log(value); }) } getId(date,1); The printed result is: At this time, if we want to get the value of the object with id 1, we can do this: function getId(array,id){ array.forEach(function(value){ if(value.id === id){ console.log(value); } }) } getId(date,1); The print result is: Yes, but what if we want to get the value of the object with id 11? Obviously, calling the function directly is not feasible, because we only get the value of the outermost object through for...Each, but the specific classification of the inner layer is not obtained. At this time, we can get the value of the inner object by recursively calling the getId(array,id) function. The operation is as follows: function getId(array,id){ array.forEach(function(value){ if(value.id === id){ console.log(value); }else if(value.goods && value.goods.length != 0){ getId(value.goods,id); } }) } // getId(date,1); getId(date,11); The printed result is: This is the end of this article about You may also be interested in:
|
<<: KVM virtualization installation, deployment and management tutorial
>>: A simple way to call desktop exe programs on a web page
This method was edited on February 7, 2021. The v...
①. How to use the alias (CNAME) record: In the do...
In daily work, we sometimes run slow queries to r...
<br />Original: http://www.alistapart.com/ar...
In most cases, MySQL does not support Chinese whe...
The first method: Use Junge's one-click scrip...
Table of contents Easy to use Create a project vu...
Slideshows are often seen on web pages. They have...
This article uses examples to explain the basic k...
What is Redis Cluster Redis cluster is a distribu...
Table of contents 1. How to view the binary data ...
Table of contents Tutorial Series 1. Introduction...
Table of contents Base Return Type String and Boo...
Alignment issues like type="radio" and t...
Table of contents 1. Demand 2. Effect 3. All code...