Рекурсия: сумма рядов из n терминов

Нужна рекурсивная функция

Серия это: 1 + 2*3 + 3*4*5 + 4*5*6*7 + ....

Найти сумму ряда для n рекурсивно. Я не могу думать о том, какие параметры я должен передать в функцию.

Мой подход

Я думал, что я должен передать n, количество терминов, которые нужно умножить, но я не могу думать о том, как я должен + и * в одной и той же функции, и что будет с моим оператором return?

3 ответа

function F(n, nmax, prod): Int
   //prod = (prod div n) * (2 * n) * (2 * n + 1)  simpler:  
   prod = prod * 2 * (2 * n + 1)  
   if n = nmax - 1
      return prod
   else
      return prod + F(n+1, nmax,  prod)

output F(1, 7, 1)

Попробуй это:

public static int GetCaluculationProduct(int n)
{
    int result = 1, temp = n;

    if (n == 1)
        return 1;

    for (int i = 0; i < n; i++)
    {
        result *= temp;
        temp++;
    }

    return result + GetCaluculationProduct(n-1);
}

С двумя рекурсивными функциями: одна для суммы, другая для произведения.

SUM

public int sum_recurs(int _n)
{
if (_n==1) return 1;

return sum_recurs (_n-1)+ sub_sum_recurs(_n);
}

ТОВАР

public int sub_sum_recurs(int _n)
{
if (_n==2) return 2*3;

return sub_sum_recurs(_n-1)/(_n-1)*(2*_n-1)*(2*_n-2);
}

ПРЯМОЙ РАСЧЕТ ФОРМУЛЫ

спасибо: https://math.stackexchange.com/questions/1590673/formula-to-calculate-directly-1-2-cdot-3-3-cdot-4-cdot-5-4-cdot-5-c

Другие вопросы по тегам