Skip to content

Commit a298aa7

Browse files
[JS] MaxRecursive and readme
1 parent 8017efc commit a298aa7

File tree

2 files changed

+63
-1
lines changed

2 files changed

+63
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Com o objetivo de alcançar uma abrangência maior e encorajar novas pessoas a c
2222
| [Fatorial][15] | [C/C++](/src/c/Fatorial.c) | [Java](/src/java/Fatorial.java) | [Python](/src/python/fatorial.py) | [Go](/src/go/fatorial/fatorial.go) | [Ruby](/src/ruby/Fatorial.rb) | [Javascript](/src/javascript/Factorial.js) | [Pascal](/src/pascal/fatorial.py) |
2323
| [Fatorial Recursiva][16] | [C/C++](/src/c/FatorialRecursiva.c) | [Java](/src/java/FatorialRecursiva.java) | [Python](/src/python/fatorial_recursiva.py) | Go | [Ruby](/src/ruby/Fatorial.rb) | [Javascript](/src/javascript/FactorialRecursive.js) | [Pascal](src/pascal/fatorial-recusiva.pas) |
2424
| [Fibonacci][17] | [C/C++](/src/c/Fibonacci.cpp) | [Java](/src/java/Fibonacci.java) | [Python](/src/python/fibonacci.py) | [Go](/src/go/fibonacci/fibonacci.go) | [Ruby](/src/ruby/Fibonacci.rb) | Javascript | Pascal |
25-
| [Máximo Recursivo][26] | [C/C++](/src/c/MaxRecursivo.c) | Java | Python | Go | Ruby | Javascript | Pascal |
25+
| [Máximo Recursivo][26] | [C/C++](/src/c/MaxRecursivo.c) | Java | Python | Go | Ruby | [Javascript](/src/javascript/MaxRecursive.js) | Pascal |
2626
| [Mínimo e Máximo Iterativo][27] | C/C++ | [Java](/src/java/MaxMinArray.java) | [Python](/src/python/min_max_iterativo.py) | Go | Ruby | Javascript | Pascal |
2727
| [Mínimo e Máximo Recursivo][28] | [C/C++](/src/c/MaxMinRecursivo.c) | Java | [Python](/src/python/maximo_minimo_recursivo.py) | [Go](/src/go/maximominimo/MaximoMinimo.go) | Ruby | Javascript | Pascal |
2828
| Mínimo e Máximo Divisão e Conquista | C/C++ | Java | [Python](/src/python/maximo_recursivo_dc.py) | [Go](/src/go/maximominimo/MaximoMinimo.go) | Ruby | Javascript | Pascal |

src/javascript/MaxRecursive.js

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
/**
2+
* Maximum using Division and Conquest
3+
* @param {Array<Number>} vector
4+
* @param {number} start
5+
* @param {number} end
6+
*/
7+
function maxDivisionAndConquest(vector, start, end){
8+
if (start === end) return vector[start];
9+
10+
const middle = parseInt((start + end) / 2);
11+
12+
const aux1 = maxDivisionAndConquest(vector, start, middle);
13+
const aux2 = maxDivisionAndConquest(vector, middle + 1, end);
14+
15+
if (aux1 > aux2) return aux1;
16+
else return aux2;
17+
}
18+
19+
const MAX_LENGTH = 10;
20+
21+
/**
22+
* @param {Array<number>} vector
23+
* @param {number} max
24+
* @param {number} index
25+
*/
26+
function max1(vector, max, index){
27+
if (vector[index] > max) max = vector[index];
28+
if (index < MAX_LENGTH - 1) max = max1(vector, max, index + 1);
29+
30+
return max;
31+
}
32+
33+
/**
34+
* @param {Array<number>} vector
35+
* @param {number} lengthVector
36+
* @returns {number}
37+
*/
38+
function max2(vector, lengthVector){
39+
if (lengthVector === 1) return vector[0];
40+
41+
const max = max2(vector, lengthVector - 1);
42+
if (max > vector[lengthVector - 1]) return max;
43+
else return vector[lengthVector - 1];
44+
}
45+
46+
function main(){
47+
let vector = [];
48+
let values = "[";
49+
for (let index = 0; index < MAX_LENGTH; index++) {
50+
let value = Math.floor(Math.random() * 99); // 0 - 99
51+
vector.push(value);
52+
values += `${value}, `;
53+
}
54+
values += "]"
55+
56+
console.log(values);
57+
console.log('maxDivisionAndConquest => ', maxDivisionAndConquest(vector, 0, MAX_LENGTH -1));
58+
console.log('max1 => ', max1(vector, vector[0], 1));
59+
console.log('max2 => ', max2(vector, MAX_LENGTH));
60+
}
61+
62+
main();

0 commit comments

Comments
 (0)