简体   繁体   中英

Why is the return keyword not giving me the desired result?

There is this challenge that I'd love to overcome. I've been stuck for almost 2 weeks. Here is the code:

 function multiply(top,bottom){ var num = top; var multiple = 2; while (num <= bottom){ num *= multiple; console.log(num); } return num; } console.log(multiply(5, 100));// expected outcome is 80

I'd love to return the last result from the console.log which is 80 but each time I use the return keyword, it doesn't bring the desired result.

You have another variable which keeps track of the next multiple, so that we can check it before we assign it to num .

 function multiply(top,bottom) { var num = top; var multiple = 2; var next = num * multiple; while(next < bottom) { num = next; next = num * multiple; } return num; } console.log(multiply(5, 100));

What's happening here is that you are multiplying a number and doing so until it reaches the desire result. But since it's not adding 1 with each step it can exceed the result. What you need is have separate variable to store the previous value:

 function multiply(top,bottom){ var num = top; var multiple = 2; while (top < bottom) { num = top; //get prevous value top *= multiple; console.log(num); } return num; } console.log(multiply(5, 100));// expected outcome is 80

Or having 1 less step is to do the calculation inside the while condition:

 function multiply(top,bottom){ var num = top; var multiple = 2; while ((top *= multiple) < bottom) { num = top; //get prevous value console.log(num); } return num; } console.log(multiply(5, 100));// expected outcome is 80

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM