# Jacobsthal and Jacobsthal-Lucas numbers

• Difficulty Level : Basic
• Last Updated : 22 Aug, 2022

## Jacobsthal numbers

The Jacobsthal numbers are the numbers obtained by the Uns in the Lucas sequence with P=1 and Q=-2, corresponding to a = 2 and b = -1.

Jacobsthal numbers are defined by the recurrence relation:

The first Jacobsthal numbers are:

0, 1, 1, 3, 5, 11, 21, 43, 85, 171, 341, 683, 1365, 2731, 5461, 10923, 21845, 43691, ……

## Jacobsthal-Lucas numbers

Jacobsthal-Lucas numbers represent the complementary Lucas sequence Vn(1, -2). They satisfy the same recurrence relation as Jacobsthal numbers but have different initial values:

Given a positive integer n, the task is to find nth Jacobsthal and Jacobsthal-Lucas numbers.

Examples :

Input : n = 5
Output :
Jacobsthal number: 11
Jacobsthal-Lucas number: 31

Input : n = 4
Output :
Jacobsthal number: 5
Jacobsthal-Lucas number: 17

Below is the implementation of finding nth Jacobsthal and Jacobsthal-Lucas numbers using recursion.

## C++

 // A simple C++ recursive solution to find// Jacobsthal and Jacobsthal-Lucas numbers#include using namespace std; // Return nth Jacobsthal number.int Jacobsthal(int n){    // base case    if (n == 0)        return 0;     // base case    if (n == 1)        return 1;     // recursive step.    return Jacobsthal(n - 1) + 2 * Jacobsthal(n - 2);} // Return nth Jacobsthal-Lucas number.int Jacobsthal_Lucas(int n){    // base case    if (n == 0)        return 2;     // base case    if (n == 1)        return 1;     // recursive step.    return Jacobsthal_Lucas(n - 1)           + 2 * Jacobsthal_Lucas(n - 2);} // Driven Programint main(){    int n = 5;    cout << "Jacobsthal number: " << Jacobsthal(n) << endl;    cout << "Jacobsthal-Lucas number: "         << Jacobsthal_Lucas(n) << endl;    return 0;}

## Java

 // A simple recursive solution// to find Jacobsthal and// Jacobsthal-Lucas numbersimport java.lang.*;import java.util.*; public class GfG {     // Return nth Jacobsthal number.    public static int Jacobsthal(int n)    {        // base case        if (n == 0)            return 0;         // base case        if (n == 1)            return 1;         // recursive step.        return Jacobsthal(n - 1) + 2 * Jacobsthal(n - 2);    }     // Return nth Jacobsthal-Lucas number.    public static int Jacobsthal_Lucas(int n)    {        // base case        if (n == 0)            return 2;         // base case        if (n == 1)            return 1;         // recursive step.        return Jacobsthal_Lucas(n - 1)            + 2 * Jacobsthal_Lucas(n - 2);    }     // Driver function    public static void main(String argc[])    {        int n = 5;        System.out.println("Jacobsthal number: "                           + Jacobsthal(n));        System.out.println("Jacobsthal-Lucas number: "                           + Jacobsthal_Lucas(n));    }} /* This code is contributed Sagar Shukla */

## Python3

 # A simple Python3 recursive solution to# find Jacobsthal and Jacobsthal-Lucas# numbers # Return nth Jacobsthal number.  def Jacobsthal(n):    # base case    if (n == 0):        return 0     # base case    if (n == 1):        return 1     # recursive step.    return Jacobsthal(n - 1) + 2 * Jacobsthal(n - 2) # Return nth Jacobsthal-Lucas number.  def Jacobsthal_Lucas(n):    # base case    if (n == 0):        return 2     # base case    if (n == 1):        return 1     # recursive step.    return Jacobsthal_Lucas(n - 1) + 2 * Jacobsthal_Lucas(n - 2)  # Driven Programn = 5print("Jacobsthal number:", Jacobsthal(n))print("Jacobsthal-Lucas number:", Jacobsthal_Lucas(n)) # This code is contributed by Smitha Dinesh Semwal

## C#

 // A simple recursive solution// to find Jacobsthal and// Jacobsthal-Lucas numbersusing System; public class GfG {     // Return nth Jacobsthal number.    public static int Jacobsthal(int n)    {        // base case        if (n == 0)            return 0;         // base case        if (n == 1)            return 1;         // recursive step.        return Jacobsthal(n - 1) + 2 * Jacobsthal(n - 2);    }     // Return nth Jacobsthal-Lucas number.    public static int Jacobsthal_Lucas(int n)    {        // base case        if (n == 0)            return 2;         // base case        if (n == 1)            return 1;         // recursive step        return Jacobsthal_Lucas(n - 1)            + 2 * Jacobsthal_Lucas(n - 2);    }     // Driver function    public static void Main()    {        int n = 5;        Console.WriteLine("Jacobsthal number: "                          + Jacobsthal(n));        Console.WriteLine("Jacobsthal-Lucas number: "                          + Jacobsthal_Lucas(n));    }} // This code is contributed vt_m

## PHP

 

## Javascript

 

Output

Jacobsthal number: 11
Jacobsthal-Lucas number: 31

Time Complexity: O(2^n), Where n is the given number
Auxiliary Space: O(1)

Below is the implementation of finding nth Jacobsthal and Jacobsthal-Lucas numbers using Dynamic Programming.

## C++

 // A DP based solution to find Jacobsthal// and Jacobsthal-Lucas numbers#include using namespace std; // Return nth Jacobsthal number.int Jacobsthal(int n){    int dp[n + 1];     // base case    dp[0] = 0;    dp[1] = 1;     for (int i = 2; i <= n; i++)        dp[i] = dp[i - 1] + 2 * dp[i - 2];     return dp[n];} // Return nth Jacobsthal-Lucas number.int Jacobsthal_Lucas(int n){    int dp[n + 1];     // base case    dp[0] = 2;    dp[1] = 1;     for (int i = 2; i <= n; i++)        dp[i] = dp[i - 1] + 2 * dp[i - 2];     return dp[n];}// Driven Programint main(){    int n = 5;    cout << "Jacobsthal number: " << Jacobsthal(n) << endl;    cout << "Jacobsthal-Lucas number: "         << Jacobsthal_Lucas(n) << endl;    return 0;}

## Java

 // A DP based solution// to find Jacobsthal and// Jacobsthal-Lucas numbersimport java.lang.*;import java.util.*; public class GfG {     // Return nth Jacobsthal number.    public static int Jacobsthal(int n)    {        int[] dp = new int[n + 1];         // base case        dp[0] = 0;        dp[1] = 1;         for (int i = 2; i <= n; i++)            dp[i] = dp[i - 1] + 2 * dp[i - 2];         return dp[n];    }     // Return nth Jacobsthal-Lucas number.    public static int Jacobsthal_Lucas(int n)    {        int[] dp = new int[n + 1];         // base case        dp[0] = 2;        dp[1] = 1;         for (int i = 2; i <= n; i++)            dp[i] = dp[i - 1] + 2 * dp[i - 2];         return dp[n];    }     // Driver function    public static void main(String argc[])    {        int n = 5;        System.out.println("Jacobsthal number: "                           + Jacobsthal(n));        System.out.println("Jacobsthal-Lucas number: "                           + Jacobsthal_Lucas(n));    }} /* This code is contributed Sagar Shukla */

## Python3

 # A DP based solution to find# Jacobsthal and Jacobsthal-# Lucas numbers # Return nth Jacobsthal number.  def Jacobsthal(n):    dp = [0] * (n + 1)     # base case    dp[0] = 0    dp[1] = 1     for i in range(2, n+1):        dp[i] = dp[i - 1] + 2 * dp[i - 2]     return dp[n]  # Return nth Jacobsthal-# Lucas number.def Jacobsthal_Lucas(n):     dp = [0] * (n + 1)     # base case    dp[0] = 2    dp[1] = 1     for i in range(2, n+1):        dp[i] = dp[i - 1] + 2 * dp[i - 2]     return dp[n]  # Driven Programn = 5 print("Jacobsthal number:", Jacobsthal(n))print("Jacobsthal-Lucas number:", Jacobsthal_Lucas(n)) # This code is contributed by Smitha Dinesh Semwal

## C#

 // A DP based solution// to find Jacobsthal and// Jacobsthal-Lucas numbersusing System; public class GfG {     // Return nth Jacobsthal number.    public static int Jacobsthal(int n)    {        int[] dp = new int[n + 1];         // base case        dp[0] = 0;        dp[1] = 1;         for (int i = 2; i <= n; i++)            dp[i] = dp[i - 1] + 2 * dp[i - 2];         return dp[n];    }     // Return nth Jacobsthal-Lucas number.    public static int Jacobsthal_Lucas(int n)    {        int[] dp = new int[n + 1];         // base case        dp[0] = 2;        dp[1] = 1;         for (int i = 2; i <= n; i++)            dp[i] = dp[i - 1] + 2 * dp[i - 2];         return dp[n];    }     // Driver Code    public static void Main()    {        int n = 5;        Console.WriteLine("Jacobsthal number: "                          + Jacobsthal(n));        Console.WriteLine("Jacobsthal-Lucas number: "                          + Jacobsthal_Lucas(n));    }} // This code is contributed vt_m

## PHP

 

## Javascript

 

Output

Jacobsthal number: 11
Jacobsthal-Lucas number: 31

Time Complexity: O(n), Where n is the given number
Auxiliary Space: O(n)

My Personal Notes arrow_drop_up