# Lucas Numbers

• Difficulty Level : Easy
• Last Updated : 27 Aug, 2022

Lucas numbers are similar to Fibonacci numbers. Lucas numbers are also defined as the sum of its two immediately previous terms. But here the first two terms are 2 and 1 whereas in Fibonacci numbers the first two terms are 0 and 1 respectively.
Mathematically, Lucas Numbers may be defined as: The Lucas numbers are in the following integer sequence:
2, 1, 3, 4, 7, 11, 18, 29, 47, 76, 123 …………..
Write a function int lucas(int n) n as an argument and returns the nth Lucas number.
Examples :

Input : 3
Output : 4

Input : 7
Output : 29

Recommended Practice

Method 1 (Recursive Solution)
Below is a recursive implementation based on a simple recursive formula.

## C++

 // Recursive C/C++ program// to find n'th Lucas number#include  // recursive functionint lucas(int n){    // Base cases    if (n == 0)        return 2;    if (n == 1)        return 1;     // recurrence relation    return lucas(n - 1) +        lucas(n - 2);} // Driver Codeint main(){    int n = 9;    printf("%d", lucas(n));    return 0;}

## Java

 // Recursive Java program to// find n'th Lucas number class GFG{     // recursive function    public static int lucas(int n)    {         // Base cases        if (n == 0)            return 2;        if (n == 1)            return 1;         // recurrence relation        return lucas(n - 1) +               lucas(n - 2);    }     // Driver Code    public static void main(String args[])    {        int n = 9;        System.out.println(lucas(n));    }}// This code is contributed// by Nikita Tiwari.

## Python3

 # Python3 program to# find n'th Lucas number # recursive functiondef lucas(n):       # Base cases    if n == 0:        return 2;    if n == 1:        return 1;       # recurrence relation    return lucas(n - 1) + lucas(n - 2);     # Driver code to test above methodsn = 9;print(lucas(n)); # This code is contributed by phasing17

## C#

 // Recursive C# program to// find n'th Lucas numberusing System; class GFG {     // recursive function    public static int lucas(int n)    {         // Base cases        if (n == 0)            return 2;        if (n == 1)            return 1;         // recurrence relation        return lucas(n - 1) + lucas(n - 2);    }     // Driver program    public static void Main()    {         int n = 9;         Console.WriteLine(lucas(n));    }} // This code is contributed by vt_m.

## PHP

 

## Javascript

 

Output :

76

Method 2 (Iterative Solution)
The time complexity of the above implementation is exponential. We can optimize it to work in O(n) time using iteration.

## C++

 // Iterative C/C++ program// to find n'th Lucas Number#include  // Iterative functionint lucas(int n){    // declaring base values    // for positions 0 and 1    int a = 2, b = 1, c, i;     if (n == 0)        return a;     // generating number    for (i = 2; i <= n; i++)    {        c = a + b;        a = b;        b = c;    }    return b;} // Driver Codeint main(){    int n = 9;    printf("%d", lucas(n));    return 0;}

## Java

 // Iterative Java program to// find n'th Lucas Numberclass GFG{    // Iterative function    static int lucas(int n)    {        // declaring base values        // for positions 0 and 1        int a = 2, b = 1, c, i;         if (n == 0)            return a;         // generating number        for (i = 2; i <= n; i++)        {            c = a + b;            a = b;            b = c;        }        return b;    }     // Driver Code    public static void main(String args[])    {        int n = 9;        System.out.println(lucas(n));    }} // This code is contributed// by Nikita tiwari.

## Python3

 # Iterative Python 3 program# to find n'th Lucas Number # Iterative functiondef lucas(n) :     # declaring base values    # for positions 0 and 1    a = 2    b = 1         if (n == 0) :        return a      # generating number    for i in range(2, n + 1) :        c = a + b        a = b        b = c         return b       # Driver Coden = 9print(lucas(n)) # This code is contributed# by Nikita tiwari.

## C#

 // Iterative C# program to// find n'th Lucas Numberusing System; class GFG {     // Iterative function    static int lucas(int n)    {         // declaring base values        // for positions 0 and 1        int a = 2, b = 1, c, i;         if (n == 0)            return a;         // generating number        for (i = 2; i <= n; i++) {            c = a + b;            a = b;            b = c;        }         return b;    }     // Driver Code    public static void Main()    {        int n = 9;         Console.WriteLine(lucas(n));    }} // This code is contributed by vt_m.

## PHP

 

## Javascript

 

Output :

76

Time complexity: O(n) since using a for loop

Space complexity: O(1) since using constant variables, since no extra space has been taken.

References:
https://en.wikipedia.org/wiki/Lucas_number
This article is contributed by Harsh Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

My Personal Notes arrow_drop_up