Using return inside loops lets you stop the whole function early when you find what you need.
Return inside loops in C++
for (initialization; condition; update) { if (some_condition) { return value; } // other code }
The return statement ends the function immediately, even if inside a loop.
Any code after return inside the loop or function will not run.
i equals 3, stopping the function.for (int i = 0; i < 5; i++) { if (i == 3) { return i; } }
check() is true, ending the function.while (true) { if (check()) { return 1; } // keep looping }
This program looks for the first even number in the array. It returns immediately when it finds 8, so it stops checking after that.
#include <iostream> int findFirstEven(int arr[], int size) { for (int i = 0; i < size; i++) { if (arr[i] % 2 == 0) { return arr[i]; } } return -1; // no even number found } int main() { int numbers[] = {1, 3, 7, 8, 10}; int result = findFirstEven(numbers, 5); std::cout << "First even number: " << result << std::endl; return 0; }
Remember, return exits the whole function, not just the loop.
If you want to stop only the loop but continue the function, use break instead.
return inside loops stops the entire function immediately.
Use it to exit early when you find what you need.
Code after return will not run.
Practice
What happens when a return statement is executed inside a loop in a C++ function?
Solution
Step 1: Understand the role of return in functions
Thereturnstatement immediately ends the function and sends back a value.Step 2: Analyze return inside a loop
Whenreturnis inside a loop, it stops the entire function, not just the loop.Final Answer:
The function immediately stops and returns the value. -> Option CQuick Check:
Return inside loop = function stops [OK]
- Thinking return only stops the loop
- Confusing return with continue or break
- Assuming code after return runs
Which of the following is the correct syntax to return the first even number found in a vector nums using a loop?
for (int i = 0; i < nums.size(); i++) {
if (nums[i] % 2 == 0) {
// return here
}
}Solution
Step 1: Identify what to return
The question asks to return the first even number, so we return the value at indexi.Step 2: Match the correct return statement
return nums[i];returns the actual even number found.Final Answer:
return nums[i]; -> Option AQuick Check:
Return value, not index [OK]
- Returning the index instead of the value
- Returning the whole vector
- Returning incorrect arithmetic on index
What is the output of the following C++ function when called with findFirstPositive({-3, -1, 0, 4, 5})?
int findFirstPositive(std::vector<int> nums) {
for (int i = 0; i < nums.size(); i++) {
if (nums[i] > 0) {
return nums[i];
}
}
return -1;
}Solution
Step 1: Trace the loop to find first positive
The loop checks each element: -3 (no), -1 (no), 0 (no), 4 (yes, positive).Step 2: Return the first positive number found
At 4, the function returns immediately with 4.Final Answer:
4 -> Option BQuick Check:
First positive = 4 [OK]
- Returning -1 instead of first positive
- Confusing 0 as positive
- Returning last positive instead of first
Identify the error in this function that tries to return the first negative number from a vector nums:
int findNegative(std::vector<int> nums) {
for (int i = 0; i < nums.size(); i++) {
if (nums[i] < 0) {
return nums[i];
} else {
return 0;
}
}
return -1;
}Solution
Step 1: Analyze the else return inside the loop
The else block returns 0 immediately if the first element is not negative, stopping the function early.Step 2: Understand why this is wrong
This prevents checking all elements; function should only return 0 after full loop if no negative found.Final Answer:
The function returns 0 too early inside the loop. -> Option DQuick Check:
Return in else inside loop causes early stop [OK]
- Returning inside else causes premature exit
- Thinking loop runs fully before return
- Misunderstanding return type requirements
Write a function that returns the index of the first zero in a vector nums. If no zero is found, return -1. Which of the following implementations is correct?
Option A:
int findZero(std::vector<int> nums) {
for (int i = 0; i < nums.size(); i++) {
if (nums[i] == 0) {
return i;
}
}
return -1;
}
Option B:
int findZero(std::vector<int> nums) {
int index = -1;
for (int i = 0; i < nums.size(); i++) {
if (nums[i] == 0) {
index = i;
}
}
return index;
}
Option C:
int findZero(std::vector<int> nums) {
for (int i = 0; i < nums.size(); i++) {
if (nums[i] == 0) {
break;
}
}
return i;
}
Option D:
int findZero(std::vector<int> nums) {
for (int i = 0; i < nums.size(); i++) {
if (nums[i] == 0) {
return nums[i];
}
}
return -1;
}Solution
Step 1: Verify the correct logic for finding first zero index
The implementation that returnsiimmediately whennums[i] == 0and -1 after the loop is correct.Step 2: Why others fail
The one setting a variable continues the loop, returning the last zero's index. Thebreakversion doesn't return -1 if no zero found andigoes out of scope. The last returns the value0instead of index.Final Answer:
Option A -> Option AQuick Check:
Return index immediately on first zero [OK]
- Returning value instead of index
- Returning last zero index instead of first
- Using break without returning causes scope errors
Ready to prove it?
Pass the test and this pattern moves unknown
