Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Ruby

Ben Dowsett
Ben Dowsett
6,777 Points

While loop counting confusion

HI Can somebody please describe what y is doing in this Ruby while loop - I understand that n is iterating each by 1 each time but I can't get my head around what y is doing.

```n = 0 y = 0

while n < 251 y = n + y n = n + 1 end

puts y```

2 Answers

n = 0
y = 0

while n < 251 
  y = n + y 
  n = n + 1 
end

puts y

The line y = n + y adds the values of n and y together and stores the result as y.

In the first run of the while loop, n and y are both 0, so y = n + y is y = 0 + 0, which sets y to 0. n is then increased.

In the second run of the while loop, n has been increased to 1 and y is 0, so y = n + y becomes y = 1 + 0, which sets y to 1. n is then increased.

In the third run of the while loop, n has increased to 2 and y is 1, so y = n + y is y = 2 + 1, which sets y to 3. n is then increased.

In the fourth run of the while loop, n is 3 and y is 3, so y = n + y is y = 3 + 3, which sets y to 6. n is then increased.

In the fifth run of the while loop, n is 4 and y is 6, so y = n + y is y = 4 + 6, which sets y to 10. n is then increased.

...

In the 251th run of the while loop, n is 250 and y is the value of 249 + 248 + ... + 1 + 0, so y = n + y is y = 250 + 249 + 248 + ... + 2 + 1 + 0. n is then increased.

In the 252nd run of the while loop, n is 251 and y is the value of 250 + 249 + ... + 1 + 0, and n is not less than 251, which ends the while loop.

The value for y is then printed, which is the sum of integers from 0 to 250, which is 31375 .

Ben Dowsett
Ben Dowsett
6,777 Points

Thank you, really helpful