Return values in C - Time & Space Complexity
Let's see how the time it takes to run code with return values changes as input grows.
We want to know how the program's steps increase when using return statements.
Analyze the time complexity of the following code snippet.
int sum(int n) {
int total = 0;
for (int i = 1; i <= n; i++) {
total += i;
}
return total;
}
This code adds numbers from 1 to n and returns the total sum.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The for-loop adding numbers one by one.
- How many times: It runs exactly n times, once for each number.
As n grows, the loop runs more times, so the work grows too.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 additions |
| 100 | 100 additions |
| 1000 | 1000 additions |
Pattern observation: The number of steps grows directly with n, so doubling n doubles the work.
Time Complexity: O(n)
This means the time to finish grows in a straight line with the input size.
[X] Wrong: "The return statement makes the function run faster or slower depending on the value returned."
[OK] Correct: The return just sends back the result after the loop finishes; it does not change how many steps the loop takes.
Understanding how return values fit with loops helps you explain how functions behave in real code.
"What if we changed the loop to run only half of n? How would the time complexity change?"
Practice
return statement do in a C function?Solution
Step 1: Understand the purpose of
Thereturnreturnstatement sends a value from the function back to the caller.Step 2: Differentiate from other actions
Printing, declaring variables, or pausing are not whatreturndoes.Final Answer:
It sends a value back to the place where the function was called. -> Option AQuick Check:
Return sends value back [OK]
- Thinking return prints output
- Confusing return with variable declaration
- Assuming return pauses program
Solution
Step 1: Check function return type and return statement
The function declaresintreturn type and returns an integer value 5.Step 2: Identify incorrect options
void myFunction() { return 5; } returns a value but declaresvoid(no return). int myFunction() { print(5); } usesprintwhich is invalid in C. myFunction() int { return 5; } has wrong syntax.Final Answer:
int myFunction() { return 5; } -> Option AQuick Check:
Return type matches returned value [OK]
- Using void but returning a value
- Using print instead of return
- Wrong function syntax
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(3, 4);
printf("%d", result);
return 0;
}Solution
Step 1: Understand the add function
The function adds two integers and returns their sum.Step 2: Calculate the sum of 3 and 4
3 + 4 equals 7, which is stored in result and printed.Final Answer:
7 -> Option BQuick Check:
3 + 4 = 7 [OK]
- Concatenating numbers as strings
- Confusing return with print
- Expecting zero or error output
int multiply(int x, int y) {
int product = x * y;
}Solution
Step 1: Check function return type and body
The function declares it returns an int but does not return any value.Step 2: Identify missing return statement
It calculates product but never returns it, causing undefined behavior.Final Answer:
Missing return statement to return the product. -> Option DQuick Check:
Return missing in non-void function [OK]
- Forgetting to return value in non-void function
- Thinking multiplication operator is wrong
- Assuming variables are undeclared
Solution
Step 1: Analyze int maxOfThree(int a, int b, int c) { if (a > b && a > c) return a; else if (b > a && b > c) return b; else return c; } logic
This version correctly checks if b is greater than both a and c in the else-if condition, fixing the missing cases in the original version.Step 2: Analyze int maxOfThree(int a, int b, int c) { int max = a; if (b > max) max = b; if (c > max) max = c; return max; } logic
This compares all values step-by-step and returns the correct maximum.Step 3: Analyze options C and D
int maxOfThree(int a, int b, int c) { return a > b > c ? a : b > c ? b : c; } uses invalid chained comparison. int maxOfThree(int a, int b, int c) { if (a > b) return a; else if (b > c) return b; else return c; } misses some cases like when a is not greater than b but b is not greater than c.Final Answer:
int maxOfThree(int a, int b, int c) { int max = a; if (b > max) max = b; if (c > max) max = c; return max; } -> Option CQuick Check:
Stepwise max update returns correct max [OK]
- Using chained comparisons incorrectly
- Missing some comparison cases
- Returning before checking all values
Ready to prove it?
Pass the test and this pattern moves unknown
