## C++ program to find the nth odd Fibonacci number:

In this post, we will learn how to find the *nth odd Fibonacci number* in *C++*. The *Fibonacci number sequence*, also known as *Fibonacci series* is a series of numbers that starts from *0 and 1* and each value is sum of two preceding ones.

For example, below is the starting numbers of *Fibonacci series*:

`0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711.....`

Here, the *first* odd Fibonacci number is *1*, *second* is *1*, *third* one is *3* etc. So, we will take the value of *n* and find out the *nth odd fibonacci number* from the *fibonacci series*.

### C++ program to find the nth odd Fibonacci number:

Below program is used to find the *nth odd Fibonacci* :

```
#include <iostream>
using namespace std;
int getNthOddFibonacci(int n)
{
int currentOdd = 1;
int prev = 0;
int curr = 1;
int temp;
int oddNumber = -1;
bool oddFound = false;
if(n == 1){
return 1;
}
while(!oddFound){
temp = curr;
curr = curr + prev;
prev = temp;
if(curr % 2 != 0){
currentOdd++;
if(currentOdd == n){
oddNumber = curr;
oddFound = true;
}
}
}
return oddNumber;
}
int main()
{
int n;
cout << "Enter the value of n : " << endl;
cin >> n;
cout << "nth odd Fibonacci number is : " << getNthOddFibonacci(n) << endl;
}
```

Here,

*getNthOddFibonacci*is used to get the nth odd fibonacci number.*currentOdd*is used to keep the current odd number found. This is incremented by*1*if we get any odd number in the Fibonacci series. Once it is equal to the user given value of*n*, it sets the value to*oddNumber*and mark*oddFound*flag as*true*, i.e. it will exit from the*while loop*.- It returns the value of
*oddNumbers*.

Sample output:

```
Enter the value of n :
12
nth odd Fibonacci number is : 1597
```

### Method 2: Using a for loop:

Another way to find the *nth odd fibonacci number* is by using a *for loop*. If I write down only the odd fibonacci values, then the series will look like:

`1, 1, 3, 5, 13, 21, 55, 89, 233, 377,....`

If you look closely, you will find that *nth odd fibonacci number* in the series is equal to *(3*n + 1)/2th* value in the fibonacci series. So, we can just use a *for loop* to find that number in the *fibonacci series*:

```
#include <iostream>
using namespace std;
int getNthOddFibonacci(int n)
{
int prev = 0;
int curr = 1;
int temp;
if(n == 1){
return 1;
}
for(int i = 2; i < (3*n +1)/2 ; i++){
temp = curr;
curr = curr + prev;
prev = temp;
}
return curr;
}
int main()
{
int n;
cout << "Enter the value of n : " << endl;
cin >> n;
cout << "nth odd Fibonacci number is : " << getNthOddFibonacci(n) << endl;
}
```

Here,

- The
*for loop*runs from*i = 2*. Because, the first and the second numbers are*0*and*1*. - At the end of the loop,
*curr*or current value of the Fibonacci series will hold the*nth*odd Fibonacci value. So, this method is returning this value.

It will give similar output as the previous example.

### You might also like:

- C++ program to find the largest of four numbers using class
- C++ STL find() explanation with example
- C++ program to convert octal value to decimal
- How to print a full pyramid in C++
- How to print an inverted pyramid in C++
- C++ program to find the GCD of two numbers
- C++ program to find the nth even number