The following outputs 11, 704 and 124 but I can't wrap my head around the reason for their output. Please help a brother.. | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
+ 7

The following outputs 11, 704 and 124 but I can't wrap my head around the reason for their output. Please help a brother..

function addBinary(a,b) { var sum=a+b; var res=””; while(sum>0) { res=sum%2+res; sum=Math.floor(sum/ 2); } } alert(addBinary(1,2)); //11 var input=407; var res=0; for(i=input;i>0;i=Math.floor(i/10)) { res=res*10+i%10; } document.write(res); //704 var arr=[1]; for(var i=1; i<3; i++) { arr[i] = arr[i-1]+i; } alert(arr.join(“”)); //124

11th Jul 2019, 9:12 PM
eMBee
eMBee - avatar
8 Answers
+ 9
I'm trying to explain third program. var arr = [1]; // arr[0] = 1; The loop start with i = 1 and arr[i] = arr[i-1] + 1 is arr[1] = arr[1-1] + 1 = 1+1=2 Next step i = 2. arr[i] = arr[i-1] + 1 is arr[1] = arr[2-1] + 1 = 2+2=4.
12th Jul 2019, 6:09 AM
Boboev Ahmadjon Safaralievich
Boboev Ahmadjon Safaralievich - avatar
+ 8
Look inside the loop you have arr [i] = arr [i-1] + i. So arr [i-1] is 1 and plus i.
12th Jul 2019, 6:19 AM
Boboev Ahmadjon Safaralievich
Boboev Ahmadjon Safaralievich - avatar
+ 3
You probably wanted to write i > 0, since that actually makes sense i in the loop starts as 407. res is 0, so res * 10 + i % 10 is 7. Then, at the end of the iteration, i becomes Math.floor(i / 10), which is 40. res * 10 + i % 10 is 70, since 7 * 10 (70) + 40 % 10 (0) is 70. Then, again, i becomes i / 10 (4). res * 10 + i % 10 = 70 * 10 (700) + i % 10 (4) = 704. 4 divided by 10 is 0(.4), so the loop stops executing. (it gets reversed)
12th Jul 2019, 5:05 AM
Airree
Airree - avatar
+ 3
arr[0] = 1 arr[1] = arr[0] + 1 -> 2 arr[2] = arr[1] + 2 -> 4
12th Jul 2019, 5:59 AM
Airree
Airree - avatar
+ 3
Ahmadjon Boboev, why are we adding 1+1 and 2+2?
12th Jul 2019, 6:13 AM
eMBee
eMBee - avatar
+ 2
The first code simply converts the sum of function arguments to it's binary representation as follow: To convert a number to binary form we must take modules of number by 2 and then reduce that number for next step. In this example for sum = 3 we have: 3%2=1. So the least significant digit of binary form is 1. To continue we must reduce the number as: [3/2]=1 (And this is a general rule for other basements too (remeber your question and ruduction in base 10)) And continue this process until sum become 0.
11th Jul 2019, 9:49 PM
Qasem
+ 2
Alright, I got that so how about the other two programs
12th Jul 2019, 5:26 AM
eMBee
eMBee - avatar
+ 2
Alright, maybe I'll understand better by helping me out with this question Ahmadjon Boboev, Qasem and Airree, https://www.sololearn.com/Discuss/1882877/?ref=app
12th Jul 2019, 6:27 AM
eMBee
eMBee - avatar