90 lines
2.3 KiB
Java
90 lines
2.3 KiB
Java
|
/** Author : Suraj Kumar
|
||
|
* Github : https://github.com/skmodi649
|
||
|
*/
|
||
|
|
||
|
|
||
|
|
||
|
/** PROBLEM DESCRIPTION :
|
||
|
* Geek created a random series and given a name geek-onacci series
|
||
|
* Given four integers a, b, b, n
|
||
|
* a, b, c represents the first three numbers of geek-onacci series
|
||
|
* Find the Nth number of the series.
|
||
|
* The nth number of geek-onacci series is a sum of the last three numbers (summation of N-1th, N-2th, and N-3th geek-onacci numbers)
|
||
|
*/
|
||
|
|
||
|
|
||
|
/** ALGORITHM :
|
||
|
* Simply use the concept of Recursion
|
||
|
* Define the base cases of the Recursion for n equal to 1 , 2 and 3
|
||
|
* Then simply use recurrence in the same way as we used it in Fibonacci series
|
||
|
*/
|
||
|
|
||
|
|
||
|
|
||
|
import java.util.*;
|
||
|
import java.lang.*;
|
||
|
|
||
|
class GFG {
|
||
|
public static int rec(int a,int b,int c,int n)
|
||
|
{
|
||
|
if(n==1)
|
||
|
return a;
|
||
|
else if(n==2)
|
||
|
return b;
|
||
|
else if(n==3)
|
||
|
return c;
|
||
|
else
|
||
|
return rec(a,b,c,n-1)+rec(a,b,c,n-2)+rec(a,b,c,n-3);
|
||
|
}
|
||
|
public static void main (String[] args) {
|
||
|
Scanner sc = new Scanner(System.in);
|
||
|
int a,b,c,n;
|
||
|
System.out.print("Enter the first number of Geek-onacci series : ");
|
||
|
a = sc.nextInt();
|
||
|
System.out.print("Enter the second number of Geek-onacci series : ");
|
||
|
b = sc.nextInt();
|
||
|
System.out.print("Enter the third number of Geek-onacci series : ");
|
||
|
c = sc.nextInt();
|
||
|
System.out.print("Enter the values of n : ");
|
||
|
n = sc.nextInt();
|
||
|
int val = rec(a,b,c,n);
|
||
|
System.out.println("Nth Geek-onacci number : "+val);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/** TEST CASES :
|
||
|
* Test Case 1 :
|
||
|
* Input : a = 1 , b = 3 , c = 2 , n = 4
|
||
|
* Output : 6
|
||
|
*
|
||
|
* Test Case 2 :
|
||
|
* Input : a = 1 , b = 3 , c = 2 , n = 5
|
||
|
* Output : 11
|
||
|
*
|
||
|
* Test Case 3 :
|
||
|
* Input : a = 1 , b = 3 , c = 2 , n = 6
|
||
|
* Output : 19
|
||
|
*/
|
||
|
|
||
|
|
||
|
/** Explanation for a = 1 , b = 3 , c = 2 , n = 5
|
||
|
* n = 5 then val = rec(1,3,2,4)+rec(1,3,2,3)+rec(1,3,2,2)
|
||
|
* rec(1,3,2,2) gives 3 and rec(1,3,2,3) gives 2 hence both totally give 3 + 2 = 5
|
||
|
* rec(1,3,2,4) is actually equal to rec(1,3,2,3)+rec(1,3,2,2)+rec(1,3,2,1) hence gives 2 + 3 + 1 = 6
|
||
|
* Now val = 6 + 5 = 11
|
||
|
* 11 will be returned as output
|
||
|
*/
|
||
|
|
||
|
|
||
|
/** Time Complexity : O(n)
|
||
|
* Auxiliary Space Complexity : O(1)
|
||
|
* Constraints : 1 <= A, B, C <= 100
|
||
|
* N >= 4
|
||
|
*/
|
||
|
|
||
|
|
||
|
|
||
|
|