# Program to find first N Iccanobif Numbers

Given a number N. The task is to find first N Iccanobif Numbers.

Iccanobif Numbers are similar to Fibonacci Numbers. The K-th Iccanobif number can be obtained by addition of previous two numbers after reversing their digits.

The first few Iccanobif Numbers are:

0, 1, 1, 2, 3, 5, 8, 13, 39, 124, 514, 836, …..

Examples:

```Input : N = 5
Output : 0 1 1 2 3

Input : N = 9
Output : 0 1 1 2 3 5 8 13 39
Explanation: Upto 8th term, adding previous two
terms is required, as there is an only single digit.
For 9th term, adding 31(reversing 8th term)
and 8 will give 39.
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: The idea is to take the first two Iccanobif Numbers as first = 0 and second = 1. Now iterate using a demoPointer N-2 times and every time find reverse of the previous two numbers using the approach discussed in: Reversing digits of a number. Find the sum of the two reversed numbers and update the variables first and second accordingly.

Below is the implementation of above approach:

## C++

 `// C++ program to find first ` `// N Icanobif numbers ` ` `  `#include ` ` `  `using` `namespace` `std; ` ` `  `// Iterative function to ` `// reverse digits of num ` `int` `reversDigits(``int` `num) ` `{ ` `    ``int` `rev_num = 0; ` ` `  `    ``while` `(num > 0) { ` `        ``rev_num = rev_num * 10 + num % 10; ` `        ``num = num / 10; ` `    ``} ` ` `  `    ``return` `rev_num; ` `} ` ` `  `// Function to print first ` `// N Icanobif Numbers ` `void` `icanobifNumbers(``int` `N) ` `{ ` `    ``// Initialize first, second numbers ` `    ``int` `first = 0, second = 1; ` ` `  `    ``if` `(N == 1) ` `        ``cout << first; ` `    ``else` `if` `(N == 2) ` `        ``cout << first << ``" "` `<< second; ` `    ``else` `{ ` `        ``// Print first two numbers ` `        ``cout << first << ``" "` `<< second << ``" "``; ` ` `  `        ``for` `(``int` `i = 3; i <= N; i++) { ` ` `  `            ``// Reversing digit of previous ` `            ``// two terms and adding them ` `            ``int` `x = reversDigits(first); ` `            ``int` `y = reversDigits(second); ` ` `  `            ``cout << x + y << ``" "``; ` ` `  `            ``int` `temp = second; ` `            ``second = x + y; ` `            ``first = temp; ` `        ``} ` `    ``} ` `} ` ` `  `// Driver Code ` `int` `main() ` `{ ` `    ``int` `N = 12; ` ` `  `    ``icanobifNumbers(N); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java program to find first ` `// N Icanobif numbers ` ` `  `public` `class` `GFG{ ` ` `  `    ``// Iterative function to ` `    ``// reverse digits of num ` `    ``static` `int` `reversDigits(``int` `num) ` `    ``{ ` `        ``int` `rev_num = ``0``; ` `     `  `        ``while` `(num > ``0``) { ` `            ``rev_num = rev_num * ``10` `+ num % ``10``; ` `            ``num = num / ``10``; ` `        ``} ` `     `  `        ``return` `rev_num; ` `    ``} ` `     `  `    ``// Function to print first ` `    ``// N Icanobif Numbers ` `    ``static` `void` `icanobifNumbers(``int` `N) ` `    ``{ ` `        ``// Initialize first, second numbers ` `        ``int` `first = ``0``, second = ``1``; ` `     `  `        ``if` `(N == ``1``) ` `            ``System.out.print(first); ` `        ``else` `if` `(N == ``2``) ` `             ``System.out.print(first + ``" "` `+ second); ` `        ``else` `{ ` `            ``// Print first two numbers ` `            ``System.out.print(first + ``" "` `+ second + ``" "``); ` `     `  `            ``for` `(``int` `i = ``3``; i <= N; i++) { ` `     `  `                ``// Reversing digit of previous ` `                ``// two terms and adding them ` `                ``int` `x = reversDigits(first); ` `                ``int` `y = reversDigits(second); ` `     `  `                 ``System.out.print(x + y + ``" "``); ` `     `  `                ``int` `temp = second; ` `                ``second = x + y; ` `                ``first = temp; ` `            ``} ` `        ``} ` `    ``} ` `     `  `    ``// Driver Code ` `    ``public` `static` `void` `main(String []args){ ` `        ``int` `N = ``12``; ` `     `  `        ``icanobifNumbers(N); ` `     ``} ` `     ``// This code is contributed by ANKITRAI1 ` `} `

## Python3

 `# Python 3 program to find first ` `# N Icanobif numbers ` ` `  `# Iterative function to ` `# reverse digits of num ` `def` `reversedigit(num): ` `    ``rev_num ``=` `0` `    ``while` `num > ``0``: ` `        ``rev_num ``=` `rev_num ``*` `10` `+` `num ``%` `10` `        ``num ``=` `num ``/``/` `10` `    ``return` `rev_num ` ` `  `# Function to print first ` `# N Icanobif Numbers ` `def` `icanobifNumbers(N): ` ` `  `    ``# Initialize first, second numbers ` `    ``first ``=` `0` `    ``second ``=` `1` `    ``if` `N ``=``=` `1``: ` `        ``print``(first) ` `    ``elif` `N ``=``=` `2``: ` `        ``print``(first, second) ` `    ``else``: ` ` `  `        ``# Print first two numbers ` `        ``print``(first, second, end ``=` `" "``) ` `        ``for` `i ``in` `range``(``3``, N ``+` `1``): ` ` `  `            ``# Reversing digit of previous ` `            ``# two terms and adding them ` `            ``x ``=` `reversedigit(first) ` `            ``y ``=` `reversedigit(second) ` `            ``print``(x ``+` `y, end ``=` `" "``) ` `            ``temp ``=` `second ` `            ``second ``=` `x ``+` `y ` `            ``first ``=` `temp ` ` `  `# Driver code ` `N ``=` `12` `icanobifNumbers(N) ` ` `  `# This code is contributed by Shrikant13 `

## C#

 `// C# program to find first ` `// N Icanobif numbers ` `  `  `using` `System; ` `public` `class` `GFG{ ` `  `  `    ``// Iterative function to ` `    ``// reverse digits of num ` `    ``static` `int` `reversDigits(``int` `num) ` `    ``{ ` `        ``int` `rev_num = 0; ` `      `  `        ``while` `(num > 0) { ` `            ``rev_num = rev_num * 10 + num % 10; ` `            ``num = num / 10; ` `        ``} ` `      `  `        ``return` `rev_num; ` `    ``} ` `      `  `    ``// Function to print first ` `    ``// N Icanobif Numbers ` `    ``static` `void` `icanobifNumbers(``int` `N) ` `    ``{ ` `        ``// Initialize first, second numbers ` `        ``int` `first = 0, second = 1; ` `      `  `        ``if` `(N == 1) ` `            ``Console.Write(first); ` `        ``else` `if` `(N == 2) ` `             ``Console.Write(first + ``" "` `+ second); ` `        ``else` `{ ` `            ``// Print first two numbers ` `            ``Console.Write(first + ``" "` `+ second + ``" "``); ` `      `  `            ``for` `(``int` `i = 3; i <= N; i++) { ` `      `  `                ``// Reversing digit of previous ` `                ``// two terms and adding them ` `                ``int` `x = reversDigits(first); ` `                ``int` `y = reversDigits(second); ` `      `  `                 ``Console.Write(x + y + ``" "``); ` `      `  `                ``int` `temp = second; ` `                ``second = x + y; ` `                ``first = temp; ` `            ``} ` `        ``} ` `    ``} ` `      `  `    ``// Driver Code ` `    ``public` `static` `void` `Main(){ ` `        ``int` `N = 12; ` `      `  `        ``icanobifNumbers(N); ` `     ``} ` `     `  `} `

## PHP

 ` 0)  ` `    ``{  ` `        ``\$rev_num` `= (``\$rev_num` `* 10) +  ` `                       ``(``\$num` `% 10);  ` `        ``\$num` `= (int)( ``\$num` `/ 10);  ` `    ``}  ` ` `  `    ``return` `\$rev_num``;  ` `}  ` ` `  `// Function to print first  ` `// N Icanobif Numbers  ` `function` `icanobifNumbers(``\$N``)  ` `{  ` `    ``// Initialize first, second numbers  ` `    ``\$first` `= 0; ` `    ``\$second` `= 1;  ` ` `  `    ``if` `(``\$N` `== 1)  ` `    ``echo` `\$first``;  ` `    ``else` `if` `(``\$N` `== 2)  ` `        ``echo` `\$first` `, ``" "``, ``\$second``;  ` `    ``else`  `    ``{  ` `        ``// Print first two numbers  ` `        ``echo` `\$first``, ``" "` `, ``\$second``, ``" "``;  ` ` `  `        ``for` `(``\$i` `= 3; ``\$i` `<= ``\$N``; ``\$i``++) ` `        ``{  ` ` `  `            ``// Reversing digit of previous  ` `            ``// two terms and adding them  ` `            ``\$x` `= reversDigits(``\$first``);  ` `            ``\$y` `= reversDigits(``\$second``);  ` ` `  `            ``echo` `(``\$x` `+ ``\$y``), ``" "``;  ` ` `  `            ``\$temp` `= ``\$second``;  ` `            ``\$second` `= ``\$x` `+ ``\$y``;  ` `            ``\$first` `= ``\$temp``;  ` `        ``}  ` `    ``}  ` `}  ` ` `  `// Driver Code  ` `\$N` `= 12;  ` `icanobifNumbers(``\$N``);  ` ` `  `// This code is ccontributed by Tushil. ` `?> `

Output:

```0 1 1 2 3 5 8 13 39 124 514 836
```

Note: For larger value of N, use numbers as string.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.