📜  查找给定递归关系的第n个项

📅  最后修改于: 2021-04-24 19:45:49             🧑  作者: Mango

n为数字序列,由递归关系a 1 = 1n + 1 / a n = 2 n定义。任务是找到给定nlog 2 (a n )的值。
例子:

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}   ,我们将以上所有内容相乘以达到
\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}}
自从1+2+3+...+(n-1)+n=\frac{n(n+1)}{2}   。然后
a_{n+1}=2^{\frac{n(n+1)}{2}}\;.a_{1}=2^{\frac{n(n+1)}{2}}
用n + 1代替n: a_{n}=2^{\frac{n(n-1)}{2}}
所以, log_{2}(a_{n})=\frac{n(n-1)}{2}
下面是上述方法的实现。

C++
// C++ program to find nth term of
// a given recurrence relation
 
#include 
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;
}


Java
// 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


Python3
# 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


C#
// 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


PHP


Javascript


输出:
10

时间复杂度:O(1)