Bird
Raised Fist0
Blockchain / Solidityprogramming~5 mins

For and while loops in Blockchain / Solidity - Time & Space Complexity

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

When we use loops in blockchain code, the time it takes to run depends on how many times the loop repeats.

We want to know how the running time grows as the number of loop steps increases.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


function processTransactions(transactions) {
  for (let i = 0; i < transactions.length; i++) {
    while (transactions[i].needsProcessing) {
      process(transactions[i]);
      transactions[i].needsProcessing = false;
    }
  }
}
    

This code goes through a list of transactions and processes each one if it needs processing.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The outer for loop runs once for each transaction.
  • Secondary operation: The inner while loop runs until the current transaction is processed, usually once per transaction.
  • Dominant operation: The for loop over all transactions dominates because it scales with the number of transactions.
How Execution Grows With Input

As the number of transactions grows, the total steps grow roughly the same amount.

Input Size (n)Approx. Operations
10About 10 times processing steps
100About 100 times processing steps
1000About 1000 times processing steps

Pattern observation: The work grows directly with the number of transactions.

Final Time Complexity

Time Complexity: O(n)

This means if you double the number of transactions, the time to process roughly doubles.

Common Mistake

[X] Wrong: "The inner while loop makes this code run much slower, like squared time."

[OK] Correct: The inner loop usually runs only once per transaction, so it does not multiply the total steps by the number of transactions.

Interview Connect

Understanding how loops affect time helps you explain your code clearly and shows you can think about efficiency in blockchain programs.

Self-Check

"What if the inner while loop could run multiple times per transaction? How would the time complexity change?"

Practice

(1/5)
1. Which statement best describes a for loop in blockchain programming?
easy
A. It repeats code while a condition is true.
B. It runs only once and then stops.
C. It repeats code a fixed number of times.
D. It stops the program immediately.

Solution

  1. Step 1: Understand the for loop purpose

    A for loop is designed to repeat code a set number of times, often counting through a range or list.
  2. Step 2: Compare with other loop types

    A while loop repeats while a condition is true, not a fixed count. The other options do not describe for loops correctly.
  3. Final Answer:

    It repeats code a fixed number of times. -> Option C
  4. Quick Check:

    for loop = fixed repeats [OK]
Hint: For loops count repeats; while loops check conditions [OK]
Common Mistakes:
  • Confusing for loops with while loops
  • Thinking for loops run only once
  • Believing for loops stop the program
2. Which of the following is the correct syntax for a while loop in blockchain programming?
easy
A. while (condition) { // code }
B. while condition: // code
C. while condition { // code }
D. while (condition): // code

Solution

  1. Step 1: Identify correct syntax style

    In blockchain programming languages like Solidity, the while loop uses parentheses for the condition and curly braces for the code block.
  2. Step 2: Check each option

    while (condition) { // code } matches the correct syntax: while (condition) { // code }. Others miss parentheses or use incorrect punctuation.
  3. Final Answer:

    while (condition) { // code } -> Option A
  4. Quick Check:

    Correct while syntax uses parentheses and braces [OK]
Hint: Remember: while(condition) { code } uses parentheses and braces [OK]
Common Mistakes:
  • Omitting parentheses around condition
  • Using colon instead of braces
  • Mixing syntax from other languages
3. What will be the output of this code snippet?
uint sum = 0;
for (uint i = 1; i <= 3; i++) {
sum += i;
}
return sum;
medium
A. 6
B. 3
C. 0
D. Error

Solution

  1. Step 1: Analyze the loop iterations

    The loop runs with i = 1, 2, 3. Each time, sum adds i: sum = 0+1, then 1+2, then 3+3.
  2. Step 2: Calculate the final sum

    Sum after loop: 0+1=1, 1+2=3, 3+3=6.
  3. Final Answer:

    6 -> Option A
  4. Quick Check:

    1+2+3 = 6 [OK]
Hint: Add numbers from 1 to 3 to get sum quickly [OK]
Common Mistakes:
  • Stopping loop early
  • Adding wrong values
  • Confusing sum initialization
4. Identify the error in this code snippet:
uint i = 0;
while (i < 3)
i++;
medium
A. Condition should be i <= 3
B. Missing braces {} for while loop body
C. Variable i should start at 1
D. Incorrect increment operator

Solution

  1. Step 1: Check loop body syntax

    The while loop lacks braces {}, so only the next statement is inside the loop.
  2. Step 2: Understand impact of missing braces

    Without braces, the loop runs only the single statement i++;. This is valid but can cause confusion or errors if more statements are added.
  3. Final Answer:

    Missing braces {} for while loop body -> Option B
  4. Quick Check:

    Always use braces for clarity in loops [OK]
Hint: Use braces {} to clearly define loop body [OK]
Common Mistakes:
  • Assuming multiple statements run without braces
  • Changing variable start unnecessarily
  • Altering loop condition wrongly
5. You want to create a loop that counts down from 5 to 1 and stores each number in an array. Which code snippet correctly uses a for loop to do this in blockchain programming?
A) for (uint i = 5; i > 0; i--) { arr.push(i); }
B) for (uint i = 1; i <= 5; i++) { arr.push(i); }
C) for (uint i = 5; i >= 1; i++) { arr.push(i); }
D) for (uint i = 5; i > 0; i++) { arr.push(i); }
hard
A. Infinite loop due to i++ with i > 0
B. Counts up from 1 to 5
C. Infinite loop due to i++ with i >= 1
D. Counts down from 5 to 1 correctly

Solution

  1. Step 1: Analyze each loop's counting direction

    Counts down from 5 to 1 correctly counts down from 5 to 1 using i-- and condition i > 0. Counts up from 1 to 5 counts up. Options C and D increase i but have conditions that cause infinite loops.
  2. Step 2: Confirm correct loop behavior

    Counts down from 5 to 1 correctly correctly pushes 5,4,3,2,1 into the array and stops when i reaches 0.
  3. Final Answer:

    Counts down from 5 to 1 correctly -> Option D
  4. Quick Check:

    Decrement i with i-- and condition i > 0 for countdown [OK]
Hint: Use i-- and i > 0 to count down safely [OK]
Common Mistakes:
  • Using i++ when counting down
  • Wrong loop condition causing infinite loops
  • Confusing counting up vs down
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