Infinite loops in Go - Time & Space Complexity
Infinite loops run without stopping, so their execution time keeps growing forever.
We want to understand what happens to the running time when a loop never ends.
Analyze the time complexity of the following code snippet.
package main
func main() {
for {
// do something simple
}
}
This code runs a loop that never stops, repeating the same action endlessly.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The infinite for loop repeating the inner action.
- How many times: Forever, with no end.
Since the loop never stops, the number of operations keeps increasing without limit.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | Very large, keeps growing |
| 100 | Even larger, keeps growing |
| 1000 | Much larger, keeps growing |
Pattern observation: The operations grow endlessly, never stopping or slowing down.
Time Complexity: O(∞)
This means the program runs forever, so the time needed is infinite and never finishes.
[X] Wrong: "The loop will finish eventually because computers are fast."
[OK] Correct: An infinite loop has no stopping point, so no matter how fast the computer is, it never ends.
Understanding infinite loops helps you spot when code might run forever, which is important for writing reliable programs.
"What if we add a condition inside the loop to stop after n times? How would the time complexity change?"
Practice
for { }Solution
Step 1: Understand the loop syntax
The code usesfor { }which is Go's way to write an infinite loop without conditions.Step 2: Analyze loop behavior
Since there is no break or condition, the loop runs forever without stopping.Final Answer:
Runs an infinite loop that never stops -> Option AQuick Check:
for { } means infinite loop [OK]
- Thinking it runs a fixed number of times
- Assuming it causes a syntax error
- Confusing with loops that have conditions
Solution
Step 1: Review Go loop syntax
Go does not have awhileorloopkeyword; infinite loops usefor { }.Step 2: Identify correct infinite loop
for { } usesfor { }, which is the correct infinite loop syntax in Go.Final Answer:
for { } -> Option CQuick Check:
Go infinite loop syntax = for { } [OK]
- Using while or loop keywords (not in Go)
- Confusing for loops with conditions as infinite
- Syntax errors from invalid keywords
package main
import "fmt"
func main() {
count := 0
for {
if count == 3 {
break
}
fmt.Println(count)
count++
}
}Solution
Step 1: Understand loop and break condition
The loop runs infinitely but breaks when count equals 3.Step 2: Trace output values
It prints count values 0, 1, 2 then breaks before printing 3.Final Answer:
0 1 2 -> Option AQuick Check:
Loop breaks at count==3, prints 0 to 2 [OK]
- Expecting 3 to be printed
- Thinking loop runs forever
- Ignoring break statement
package main
import "fmt"
func main() {
i := 0
for i < 5 {
fmt.Println(i)
}
}Solution
Step 1: Identify loop condition and variable
The loop runs while i < 5 but i is never changed inside the loop.Step 2: Fix infinite loop by incrementing i
Addingi++inside the loop updates i, allowing the loop to end.Final Answer:
Add i++ inside the loop to increment i -> Option DQuick Check:
Increment loop variable to avoid infinite loop [OK]
- Forgetting to increment loop variable
- Adding break without changing i causes infinite loop
- Changing loop to infinite loop syntax accidentally
Solution
Step 1: Understand infinite loop with timeout
Usefor { }for infinite loop andtime.Afterto wait 5 seconds.Step 2: Break loop after 5 seconds
Inside loop, check if 5 seconds passed and usebreakto stop loop safely.Final Answer:
Use for { } with time.After and break when 5 seconds pass -> Option BQuick Check:
Infinite loop + timer + break = safe stop [OK]
- Using invalid while syntax
- Not breaking loop causes infinite run
- Using fixed count loop instead of infinite
Ready to prove it?
Pass the test and this pattern moves unknown
