While loop in Ruby - Time & Space Complexity
We want to understand how the time a while loop takes changes as the input size grows.
Specifically, how many times does the loop run when the input gets bigger?
Analyze the time complexity of the following code snippet.
i = 0
while i < n
puts i
i += 1
end
This code prints numbers from 0 up to n-1 using a while loop.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The while loop runs repeatedly.
- How many times: It runs once for each number from 0 up to n-1, so n times.
As n gets bigger, the loop runs more times, growing in a straight line.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 times |
| 100 | 100 times |
| 1000 | 1000 times |
Pattern observation: The number of operations grows directly with n; if n doubles, operations double.
Time Complexity: O(n)
This means the time it takes grows in a straight line as the input size increases.
[X] Wrong: "The while loop runs a fixed number of times no matter what n is."
[OK] Correct: The loop runs once for each number up to n, so if n grows, the loop runs more times.
Understanding how loops grow with input size helps you explain your code clearly and shows you can think about efficiency.
"What if we changed the loop to increase i by 2 each time? How would the time complexity change?"
Practice
while loop do in Ruby?Solution
Step 1: Understand the purpose of a while loop
A while loop runs the code inside it repeatedly as long as the condition is true.Step 2: Compare options with the definition
Only Repeats code as long as a condition is true correctly describes this behavior.Final Answer:
Repeats code as long as a condition is true -> Option CQuick Check:
while loop = repeats while true [OK]
- Thinking while loop runs code once
- Confusing while with if statement
- Assuming it stops program immediately
while loop in Ruby?Solution
Step 1: Recall Ruby while loop syntax
Ruby useswhile condition do ... endorwhile condition ... endwithout braces.Step 2: Check each option
while condition do # code end matches Ruby syntax. Options B and C use other languages' syntax. while condition # code loop is invalid.Final Answer:
while condition do\n # code\nend -> Option DQuick Check:
Ruby while loop uses do/end [OK]
- Using braces {} like in JavaScript
- Using colon : like in Python
- Ending with 'loop' keyword
i = 1 while i <= 3 do puts i i += 1 end
Solution
Step 1: Trace the loop iterations
i starts at 1. Loop runs while i <= 3. It prints i then adds 1 each time.Step 2: List printed values
Prints 1, then 2, then 3. When i becomes 4, condition fails and loop stops.Final Answer:
1 2 3 -> Option AQuick Check:
Prints 1 to 3 inclusive [OK]
- Including 4 in output
- Starting from 0 instead of 1
- No output due to syntax errors
count = 5 while count > 0 puts count end
Solution
Step 1: Analyze loop condition and body
count starts at 5 and condition is count > 0. Inside loop, count is never changed.Step 2: Understand loop behavior
Since count never decreases, condition stays true forever, causing infinite loop.Final Answer:
Missing increment or decrement causing infinite loop -> Option BQuick Check:
Loop needs variable change to stop [OK]
- Forgetting to change loop variable
- Assuming 'do' is mandatory
- Thinking puts outside loop fixes error
while loop to sum all even numbers from 2 to 10 inclusive in Ruby?Solution
Step 1: Understand the goal
We want to add even numbers from 2 to 10 inclusive.Step 2: Check each option's logic
i = 2 sum = 0 while i <= 10 do sum += i i += 2 end puts sum starts at 2 and increments by 2 up to 10 inclusive, summing even numbers correctly. i = 1 sum = 0 while i <= 10 do if i % 2 == 0 sum += i end i += 1 end puts sum checks each number from 1 to 10 and adds if even, also correct but less efficient. sum = 0 while i <= 10 do sum += i i += 1 end puts sum sums all numbers, not just even. i = 2 sum = 0 while i < 10 do sum += i i += 2 end puts sum stops before 10, missing 10.Step 3: Choose best option
i = 2 sum = 0 while i <= 10 do sum += i i += 2 end puts sum is more direct and efficient for summing even numbers from 2 to 10 inclusive.Final Answer:
Option A code correctly sums even numbers 2 to 10 inclusive -> Option AQuick Check:
Increment by 2 starting at 2, sum all [OK]
- Forgetting to include 10 in sum
- Adding all numbers, not just even
- Using wrong loop condition
Ready to prove it?
Pass the test and this pattern moves unknown
