Find nth term of a given recurrence relation

Let an be a sequence of numbers, which is defined by the recurrence relation a1=1 and an+1/an=2n. The task is to to find the value of log2(an) for a given n.

Examples:

Input: 5
Output: 10
Explanation: 
log2(an) = (n * (n - 1)) / 2
= (5*(5-1))/2
= 10

Input: 100
Output: 4950

\frac{a_{n+1}}{a_{n}}=2^{n}
\frac{a_{n}}{a_{n-1}}=2^{n-1}
.
.
.
\frac{a_{2}}{a_{1}}=2^{1}, We multiply all of the above in order to reach
\frac{a_{n+1}}{a_{n}}\;.\;\frac{a_{n}}{a_{n-1}}=2^{n-1}\;.\;.\;.\;\frac{a_{2}}{a_{1}}=2^{n+(n-1)+...+1}
\frac{a_{n+1}}{a_{n}}=2^{\frac{n(n+1)}{2}}

Since    1+2+3+...+(n-1)+n=\frac{n(n+1)}{2}. Then
a_{n+1}=2^{\frac{n(n+1)}{2}}\;.a_{1}=2^{\frac{n(n+1)}{2}} .
Substituting n+1 for n: a_{n}=2^{\frac{n(n-1)}{2}}
So,  log_{2}(a_{n})=\frac{n(n-1)}{2}

Below is the implementation of above approach.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to find nth term of 
// a given recurrence relation
  
#include <bits/stdc++.h>
using namespace std;
  
// function to return required value
int sum(int n)
{
  
    // Get the answer
    int ans = (n * (n - 1)) / 2;
  
    // Return the answer
    return ans;
}
  
// Driver program
int main()
{
  
    // Get the value of n
    int n = 5;
  
    // function call to print result
    cout << sum(n);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find nth term 
// of a given recurrence relation
import java.util.*;
  
class solution
{
static int sum(int n)
{
    // Get the answer
    int ans = (n * (n - 1)) / 2;
  
    // Return the answer
    return ans;
}
  
// Driver code
public static void main(String arr[])
{
  
    // Get the value of n
    int n = 5;
  
    // function call to print result
    System.out.println(sum(n));
}
}
//This code is contributed byte
//Surendra_Gangwar

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to find nth 
# term of a given recurrence 
# relation
  
# function to return 
# required value
def sum(n):
  
    # Get the answer
    ans = (n * (n - 1)) / 2;
      
    # Return the answer
    return ans
  
# Driver Code
  
# Get the value of n
n = 5
  
# function call to prresult
print(int(sum(n)))
  
# This code is contributed by Raj

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find nth term 
// of a given recurrence relation
using System;
  
class GFG
{
static int sum(int n)
{
    // Get the answer
    int ans = (n * (n - 1)) / 2;
  
    // Return the answer
    return ans;
}
  
// Driver code
public static void Main()
{
  
    // Get the value of n
    int n = 5;
  
    // function call to print result
    Console.WriteLine(sum(n));
}
}
  
// This code is contributed byte
// inder_verma

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to find nth term of 
// a given recurrence relation
  
// function to return required value
function sum($n)
{
  
    // Get the answer
    $ans = ($n * ($n - 1)) / 2;
  
    // Return the answer
    return $ans;
}
  
// Driver Code
  
// Get the value of n
$n = 5;
  
// function call to print result
echo sum($n);
  
// This code is contributed by
// inder_verma
?>

chevron_right


Output:

10

Time Complexity: O(1)



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.