Bird
Raised Fist0
Goprogramming~5 mins

For loop as while in Go - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: For loop as while
O(n)
Understanding Time Complexity

We want to see how the time it takes to run a for loop used like a while loop changes as the input grows.

How does the number of steps grow when the loop runs more times?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


package main

func countDown(n int) {
    for n > 0 {
        n--
    }
}

This code counts down from n to zero using a for loop that acts like a while loop.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The loop runs and decreases n by 1 each time.
  • How many times: The loop runs exactly n times until n reaches zero.
How Execution Grows With Input

Each time n gets bigger, the loop runs more times, directly matching n.

Input Size (n)Approx. Operations
1010
100100
10001000

Pattern observation: The number of steps grows in a straight line with n.

Final Time Complexity

Time Complexity: O(n)

This means the time to finish grows directly with the size of n.

Common Mistake

[X] Wrong: "The loop runs a fixed number of times no matter what n is."

[OK] Correct: The loop depends on n and runs once for each count down, so bigger n means more steps.

Interview Connect

Understanding how loops grow with input helps you explain your code clearly and shows you know how programs scale.

Self-Check

"What if we changed the loop to decrease n by 2 each time? How would the time complexity change?"

Practice

(1/5)
1. Which of the following is the correct way to write a while loop in Go using a for loop?
easy
A. for i < 5 { i++ }
B. while i < 5 { i++ }
C. for (i < 5) { i++ }
D. loop i < 5 { i++ }

Solution

  1. Step 1: Understand Go's while loop syntax

    Go uses for condition { } to act like a while loop.
  2. Step 2: Identify the correct syntax

    for i < 5 { i++ } uses for i < 5 { i++ }, which is valid Go syntax for a while loop.
  3. Final Answer:

    for i < 5 { i++ } -> Option A
  4. Quick Check:

    Go while loop = for condition { } [OK]
Hint: Remember: Go uses 'for' with condition as while loop [OK]
Common Mistakes:
  • Using 'while' keyword which Go does not support
  • Adding parentheses around the condition unnecessarily
  • Using 'loop' keyword which is invalid in Go
2. Which of the following Go code snippets correctly uses a for loop as a while loop to print numbers from 1 to 3?
easy
A. i := 1 for i <= 3 { fmt.Println(i) i++ }
B. i := 1 for (i <= 3) { fmt.Println(i) i++ }
C. i := 1 for i < 3 { fmt.Println(i) i++ }
D. i := 1 while i <= 3 { fmt.Println(i) i++ }

Solution

  1. Step 1: Check syntax for Go while loop

    Go uses for condition { } without parentheses around condition.
  2. Step 2: Verify loop condition and output

    i := 1 for i <= 3 { fmt.Println(i) i++ } uses i <= 3 and increments i, printing 1, 2, 3 correctly.
  3. Final Answer:

    i := 1 for i <= 3 { fmt.Println(i) i++ } -> Option A
  4. Quick Check:

    Correct Go while loop syntax = i := 1 for i <= 3 { fmt.Println(i) i++ } [OK]
Hint: No parentheses needed around condition in Go for loop [OK]
Common Mistakes:
  • Using 'while' keyword which is invalid in Go
  • Using '<' instead of '<=' causing missing last number
  • Adding parentheses around condition causing syntax error
3. What will be the output of the following Go code?
i := 0
for i < 3 {
    fmt.Print(i, " ")
    i++
}
medium
A. 1 2 3
B. 0 1 2
C. 0 1 2 3
D. 1 2

Solution

  1. Step 1: Analyze loop condition and initial value

    Variable i starts at 0 and loop runs while i < 3.
  2. Step 2: Trace loop iterations and output

    i prints 0, then increments to 1; prints 1, increments to 2; prints 2, increments to 3; loop stops.
  3. Final Answer:

    0 1 2 -> Option B
  4. Quick Check:

    Loop prints 0 to 2 with spaces [OK]
Hint: Loop runs while condition true, stops when false [OK]
Common Mistakes:
  • Assuming loop includes i=3 output
  • Starting i from 1 instead of 0
  • Forgetting to increment i causing infinite loop
4. Identify the error in the following Go code that tries to use a for loop as a while loop:
i := 0
for i < 3 {
    fmt.Println(i)
}
medium
A. Variable i should be declared inside the loop
B. Incorrect loop condition syntax
C. Using fmt.Println instead of fmt.Print
D. Missing increment of i inside the loop causing infinite loop

Solution

  1. Step 1: Check loop condition and body

    The loop condition is valid, but i is never changed inside the loop.
  2. Step 2: Understand consequences of missing increment

    Without incrementing i, the condition i < 3 remains true forever, causing an infinite loop.
  3. Final Answer:

    Missing increment of i inside the loop causing infinite loop -> Option D
  4. Quick Check:

    Change loop variable inside loop to avoid infinite loop [OK]
Hint: Always update loop variable inside for-as-while loop [OK]
Common Mistakes:
  • Forgetting to increment or change loop variable
  • Thinking fmt.Println causes error
  • Declaring variable inside loop unnecessarily
5. You want to use a for loop as a while loop in Go to read user input until the user types "exit". Which code snippet correctly implements this?
hard
A. var input string for input != "exit" { fmt.Print("Enter text: ") fmt.Scanln(&input) }
B. var input string for input == "exit" { fmt.Print("Enter text: ") fmt.Scanln(&input) }
C. var input string for { fmt.Print("Enter text: ") fmt.Scanln(&input) if input == "exit" { break } }
D. var input string while input != "exit" { fmt.Print("Enter text: ") fmt.Scanln(&input) }

Solution

  1. Step 1: Understand the loop condition for reading input

    We want to keep reading until input equals "exit".
  2. Step 2: Analyze options for correct loop behavior

    var input string for { fmt.Print("Enter text: ") fmt.Scanln(&input) if input == "exit" { break } } uses an infinite loop with a break when input is "exit", which is safe and common in Go.
  3. Step 3: Why other options fail

    var input string for input != "exit" { fmt.Print("Enter text: ") fmt.Scanln(&input) } uses input before reading it, so loop condition is false initially (empty string != "exit" is true, but input is empty initially). var input string for input == "exit" { fmt.Print("Enter text: ") fmt.Scanln(&input) } loops only if input == "exit" which is opposite. var input string while input != "exit" { fmt.Print("Enter text: ") fmt.Scanln(&input) } uses invalid 'while' keyword.
  4. Final Answer:

    Use infinite for loop with break on "exit" input -> Option C
  5. Quick Check:

    Use for { ... if condition { break } } for while loops with input [OK]
Hint: Use infinite loop with break for input-based while loops [OK]
Common Mistakes:
  • Using 'while' keyword which is invalid in Go
  • Checking condition before first input read
  • Using wrong loop condition causing no input read
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard