Рекурсия: сумма рядов из 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);
}
ПРЯМОЙ РАСЧЕТ ФОРМУЛЫ