# Help on Intermediate JS Scripting exercises

Tell us what’s happening:

Your code so far

``````
function smallestCommons(arr) {
//determine which of two numbers is the largest and smallest
var min = Math.min(...arr);
var max = Math.max(...arr);

// create array of all numbers inclusive of max and mins, i.e. the ends
var fullArray = Array.from([min, max], function(a, b) {return min + b});
//sort the array of all numbers inclusive of max and min, i.e. the ends
var sortedFullArray = fullArray.sort((a, b) => b - a);

//function: greatest comomon divisory via Euclid's method for any two numbers
function gCD(a, b) {
var temp = 0;
if (b === 0) {
return a;
}
else if (a === 0) {
return b;
}
else {
while (!b) {
temp = b;
b = a % b;
a = b;
}
}
}

//function: least common multiple by applying Euclid's method for any two numbers
function lCM(a, b) {
(a * b / gCD(a, b));
}

//main function that iterates through entire array of numbers to find LCM for all
function lCMIterate (arr) {
//make a copy of array passed in for use in function
var arrCopy = [].concat(arr);
var lCMOutput = 0;
lCMOutput = lCM(arrCopy, arrCopy);
arrCopy.shift;
arrCopy.shift;
arrCopy.unshift(lCMOutput);
if (arrCopy.length === 2) {
return lcmoutput;
}
else {
while (arrCopy.length > 2) {
lCMIterate(arrCopy, arrCopy);
}
}
}

lCMIterate(sortedFullArray);
}

smallestCommons([1,5]);

``````

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0`.

Challenge: Smallest Common Multiple

Link to the challenge:

I don’t have the time to debug it throughly but I see you are missing return statement. Where is the return statement of your `smallestCommons` function? if it hasn’t one it just returns `undefined`

Thank you still having trouble. I updated code to another thread. Sorry, first time poster and new to this. Haven’t had any issues solving challenges until this problem!!!

Tell us what’s happening:
Too much recursion error or too many resources or possible infinite loop. Struggling any help would be great.

Your code so far

`````` function smallestCommons(arr) {

//determine which of two numbers is the largest and smallest

var min = Math.min(arr, arr);

var max = Math.max(arr, arr);

//create an array with all the numbers inclusive of largest and smallest

var fullArray = [ ];

for (var i = min; i <= max; i++) {

fullArray.push(i);

}

//sort the array of all numbers inclusive of max and min, i.e. the ends

var sortedFullArray = fullArray.sort((a, b) => b - a);

//function: greatest comomon divisory via Euclid's method for any two numbers

function gCD(a, b) {

var c = 0;

while (b != 0) {

c = b;

b = a % b;

a = c;

}

return a;

}

//function: least common multiple by applying Euclid's method for any two numbers

function lCM(a, b) {

return (a * b / gCD(a, b));

}

//recursive function that iterates through entire array of numbers to find LCM for all

var lCMOutput = 0;

function lCMIterate (arr) {

//try first two numbers in array for

lCMOutput = lCM(arr, arr);

arr.shift;

arr.shift;

arr.unshift(lCMOutput);

if (arr.length === 2) {

return lCMOutput;

}

else {

lCMIterate(arr);

}

}

lCMIterate(sortedFullArray);

return lCMOutput;

}
``````
``````
function smallestCommons(arr) {
//determine which of two numbers is the largest and smallest
var min = Math.min(arr, arr);
var max = Math.max(arr, arr);
//create an array with all the numbers inclusive of largest and smallest
var fullArray = [];
for (var i = min; i <= max; i++) {
fullArray.push(i);
}
//sort the array of all numbers inclusive of max and min, i.e. the ends
var sortedFullArray = fullArray.sort((a, b) => b - a);

//function: greatest comomon divisory via Euclid's method for any two numbers
function gCD(a, b) {
var c = 0;
while (b != 0) {
c = b;
b = a % b;
a = c;
}
return a;
}

//function: least common multiple by applying Euclid's method for any two numbers
function lCM(a, b) {
return (a * b / gCD(a, b));
}

//recursive function that iterates through entire array of numbers to find LCM for all
var lCMOutput = 0;
function lCMIterate (arr) {
//try first two numbers in array for
lCMOutput = lCM(arr, arr);
arr.shift;
arr.shift;
arr.unshift(lCMOutput);
if (arr.length === 2) {
return lCMOutput;
}
else {
lCMIterate(arr);
}
}

lCMIterate(sortedFullArray);
return lCMOutput;
}

smallestCommons([1,5]);

``````

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0`.

Challenge: Smallest Common Multiple

Link to the challenge:

To point you in the right direction, take closer look at the `lCMIterate` function, you have two small bugs preventing reaching the base case of the recursive function.

Thank you / much appreciated. I couldn’t figure it out, so I actually completely restarted and solved it without using Euclid . Below is new code that just passed.:

``````function smallestCommons(arr) {  //find min, max for the range of our function
var SCM = 0;
if (arr > arr) {
var max = arr;
var min = arr;
}
else {
var max = arr;
var min = arr;
}

//create an array of all numbers inclusive between min, max
//calculate maximum scm which is all numbers inclusive multiplied all together
var fullParameterArr = [];
var multipliedArray = [];
var multipliedAll = 1;
//generate by finding all combinations
for (var i = min; i <= max; i++) {
fullParameterArr.push(i);
multipliedAll*=i
multipliedArray.push(multipliedAll);
}
multipliedArray.sort((a,b) => b-a);
var maxSCM = multipliedArray;
var i = 1;
while(i*max <= maxSCM) {
var j = max-1;
var scmCountDown = fullParameterArr.length-1;
while ((i*max) % j === 0 && scmCountDown !== 0 && j >= min) {
scmCountDown--;
j--;
}
if (scmCountDown === 0) {
SCM = i*max;
break;
}
i++;
}
return SCM;
}
``````

Your code has been blurred out to avoid spoiling a full working solution for other campers who may not yet want to see a complete solution. In the future, if you post a full passing solution to a challenge and have questions about it, please surround it with `[spoiler]` and `[/spoiler]` tags on the line above and below your solution code.

Thank you.

I’ve edited your post for readability. When you enter a code block into a forum post, please precede it with a separate line of three backticks and follow it with a separate line of three backticks to make it easier to read.

See this post to find the backtick on your keyboard. The “preformatted text” tool in the editor (`</>`) will also add backticks around text.

Note: Backticks are not single quotes. 