Jacobsthal序列是类似于Fibonacci序列的加法序列,由递归关系J n = J n-1 + 2J n-2定义,初始项J 0 = 0和J 1 = 1。称为雅各布斯泰尔数。它们是卢卡斯序列U n (P,Q)的特定类型,其P = 1和Q = -2。
第一个Jacobsthal数是:
0,1,1,3,5,11,21,43,85,171,341,683,1365,2731,5461,10923,21845,43691,……
Jacobsthal数由递归关系定义:
Jacobsthal-Lucas数
Jacobsthal-Lucas数字代表互补的Lucas序列V n (1,-2)。它们满足与Jacobsthal数相同的递归关系,但具有不同的初始值:
给定正整数n 。任务是找到第n个Jacobsthal和Jacobsthal-Lucas数。
例子 :
Input : n = 5
Output :
Jacobsthal number: 11
Jacobsthal-Lucas number: 31
Input : n = 4
Output :
Jacobsthal number: 5
Jacobsthal-Lucas number: 17
下面是使用递归找到第n个Jacobsthal和Jacobsthal-Lucas数的实现。
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 Program
int 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 numbers
import java.util.*;
import java.lang.*;
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 cotributed 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 Program
n = 5
print("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 numbers
using 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 cotributed vt_m
PHP
Javascript
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 Program
int 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 numbers
import java.util.*;
import java.lang.*;
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 cotributed 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 Program
n = 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 numbers
using 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 cotributed vt_m
PHP
输出 :
Jacobsthal number: 11
Jacobsthal-Lucas number: 31
下面是使用动态编程查找第n个Jacobsthal和Jacobsthal-Lucas数的实现。
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 Program
int 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 numbers
import java.util.*;
import java.lang.*;
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 cotributed 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 Program
n = 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 numbers
using 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 cotributed vt_m
的PHP
输出:
Jacobsthal number: 11
Jacobsthal-Lucas number: 31