2015-12-27 4 views
-1

рекурсивной функции необходиморекурсии: Сумма серии п членов

серии: 1 + 2 * 3 + 3 * 4 * 5 + 4 * 5 * 6 * 7 + ....

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

Мой подход

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

+0

Вы отправляете первое число, которое также является числом чисел для умножения ... –

ответ

2
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) 
0

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

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); 
} 
0

с 2-рекурсивных функций: один для суммы, а другой для продукта.

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); 
} 

DIRECT ФОРМУЛА РАСЧЕТА

благодаря: https://math.stackexchange.com/questions/1590673/formula-to-calculate-directly-1-2-cdot-3-3-cdot-4-cdot-5-4-cdot-5-c#1590687

enter image description here

Смежные вопросы