+ 1

Could You explain this answer?

res = 0; for(i=407;i>0;i=Math.floor(i/10)){ res= res*10+i%10;} document.write(res); answer is 704, why? I understand that i=Math.floor(i/10) is equal to 40.

22nd Jan 2017, 9:17 AM
RomanB
RomanB - avatar
2 odpowiedzi
+ 2
before first loop ( intialisation ): res == 0, i == 407 > 0 is true first loop: res == 0*10+407%10 == 7 ( division rest of 407 by 10 ) end first loop: i == Math.floor(407/10) == 40 ( you was right here ) before second loop: res == 7, i == 40 > 0 is true second loop: res == 7*10+40%10 == 70 ( division rest == 0, and times 10 make kind of shift to the left ) end second loop: i == Math.floor(40/10) == 4 before third loop: res == 70, i == 4 > 0 is true third loop: res == 70*10+4%10 == 704 end third loop: i == Math.floor(4/10) == 0 > 0 is false... end of looping, write "704" which is the value of 'res" ^^
22nd Jan 2017, 1:35 PM
visph
visph - avatar
+ 1
thanks, now I got it.
23rd Jan 2017, 8:00 AM
RomanB
RomanB - avatar