Function calling - Time & Space Complexity
When we call a function in C, the program runs the code inside that function. We want to see how the time it takes changes when the function is called many times.
How does the number of function calls affect the total work done?
Analyze the time complexity of the following code snippet.
void printNumbers(int n) {
for (int i = 0; i < n; i++) {
printf("%d\n", i);
}
}
int main() {
printNumbers(5);
printNumbers(5);
return 0;
}
This code calls a function twice, and each call prints numbers from 0 up to n-1.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The for-loop inside the function that runs n times per call.
- How many times: The function is called twice, so the loop runs 2 x n times in total.
Each function call runs a loop from 0 to n-1. Calling it twice means the total work doubles compared to calling it once.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 20 (2 x 10) |
| 100 | 200 (2 x 100) |
| 1000 | 2000 (2 x 1000) |
Pattern observation: The total work grows directly with n, just doubled because of two calls.
Time Complexity: O(n)
This means the time grows in a straight line with the input size n, even if the function is called multiple times a fixed number of times.
[X] Wrong: "Calling the function twice makes the time complexity O(2n²) because it doubles and squares the work."
[OK] Correct: The function's loop runs n times per call, so two calls mean 2 x n operations, which is still linear, not squared. Constants like 2 do not change the overall growth type.
Understanding how function calls add up helps you explain program speed clearly. It shows you can think about how repeated work affects performance, a useful skill in many coding situations.
"What if the function called itself recursively n times instead of being called twice? How would the time complexity change?"
Practice
call a function in C?Solution
Step 1: Understand function calling
Calling a function means running the code inside it by using its name followed by parentheses.Step 2: Differentiate from defining or declaring
Defining or declaring a function is writing it, not running it. Calling is executing it.Final Answer:
Execute the code inside the function by using its name and parentheses -> Option AQuick Check:
Function call = run code by name() [OK]
- Confusing calling with defining the function
- Thinking calling means declaring the function prototype
- Believing calling is writing comments
printMessage in C?Solution
Step 1: Recall function call syntax
In C, calling a function requires its name followed by parentheses and a semicolon.Step 2: Check each option
printMessage(); uses correct syntax: function name + parentheses + semicolon. Others are invalid syntax.Final Answer:
printMessage(); -> Option AQuick Check:
Function call syntax = name() [OK]
- Omitting parentheses when calling
- Using keywords like 'call' which don't exist in C
- Missing semicolon at the end
void greet() {
printf("Hello!\n");
}
int main() {
greet();
return 0;
}Solution
Step 1: Understand function greet()
The function greet() prints "Hello!" followed by a newline.Step 2: Check main() function call
Main calls greet(), so the program prints "Hello!" on the screen.Final Answer:
Hello! -> Option BQuick Check:
Calling greet() prints Hello! [OK]
- Thinking function name prints output
- Assuming no output without explicit main print
- Confusing function call with declaration
void sayHi() {
printf("Hi!\n");
}
int main() {
sayHi;
return 0;
}Solution
Step 1: Check function call syntax
In main(), sayHi is written without parentheses, so it is not a function call.Step 2: Correct function call
To call sayHi, it must be written as sayHi(); with parentheses.Final Answer:
Missing parentheses when calling sayHi -> Option DQuick Check:
Function call needs () [OK]
- Omitting parentheses when calling functions
- Confusing function name with variable
- Assuming semicolon alone calls function
multiply to multiply 4 and 5 and print the result?int multiply(int a, int b) {
return a * b;
}
int main() {
// Your code here
return 0;
}Solution
Step 1: Understand multiply function
It returns the product of two integers.Step 2: Call multiply and print result
To show output, call multiply(4, 5) inside printf with %d format.Final Answer:
printf("%d", multiply(4, 5)); -> Option CQuick Check:
Use printf to display function return [OK]
- Calling multiply without printing result
- Using print() instead of printf() in C
- Assigning result but not printing
Ready to prove it?
Pass the test and this pattern moves unknown
