1 Востаннє редагувалося koala (16.02.2023 15:43:09)

Тема: Рекурсія С++

за допомогою рекурсії знайти суму s
s = ∑(нижня межа -1, верхня межа -n)(2n-1)^2



#include <iostream>
using namespace std;

int Sum(int n) {
    
    if (n == 1) {
        return 1;
    }
    
    else {
        return (2 * n - 1) * (2 * n - 1) + Sum(n - 1);
    }
}

int main() {
    int n = 5; 
    int sum = Sum(n);
    cout << "The sum  s = " << sum << endl;
    return 0;
}

Можете сказати чи все правильно, чи як зробити щоб було краще

2

Re: Рекурсія С++

Додав вам теги code.
Не бачу особливих проблем, розв'язок цілком адекватний завданню. Звісно, рекурсія тут не потрібна, але ж таке завдання.

Подякували: ruslana031120151

3

Re: Рекурсія С++

ruslana03112015 написав:

s = ∑(нижня межа -1, верхня межа -n)(2n-1)^2

Якщо нижня межа 1, а верхня межа n, то чому ви в коді значення n змінюєте? Десь в завданні написано, що межа змінюється?

4

Re: Рекурсія С++

Що, видрали шматок коду в одногрупника який робив факторіял? Дуже розумно, але в завданні цього нема.

ruslana03112015 написав:
    if (n == 1) {
        return 1;
    }
Український студент пише код, 18+

5

Re: Рекурсія С++

Так, треба виносити в "сьогодні я дізнався": пан Tarpan87 не знає, що таке рекурсія.

Подякували: bebyk1

6

Re: Рекурсія С++

Визнаю помилку, першим елементом буде одиниця.

7

Re: Рекурсія С++

Ймовірно Tarpan87 очікував побачити явний вираз для (n=1).

int Sum(int n) {
    if (n == 1)
        return (2 * n - 1) * (2 * n - 1);
    return (2 * n - 1) * (2 * n - 1) + Sum(n - 1);
}
Подякували: Tarpan871

8

Re: Рекурсія С++

Ну і для порядку

int sum(int n) {
    return n*(2*n+1)(2*n-1)/3;
}
Подякували: Tarpan871

9

Re: Рекурсія С++

ruslana03112015 написав:

s = ∑(нижня межа -1, верхня межа -n)(2n-1)^2

Я бачу алгоритм таким, бо символ n означає верхню межу, а не індекс:

S = \sum_{i=1}^n (2n-1)^2 

.

Чого ви бачите алгоритм таким я не розумію.

S = \sum_{i=1}^n (2i-1)^2 

.

Подякували: leofun01, koala, lucas-kane3

10

Re: Рекурсія С++

А отут я повністю підтримую пана Tarpan87.
Гадаю, проблема в тому, що запис досить кривий (скажімо, там ніби сума по від'ємних значеннях, від -1 до -n), тому автоматично такі деталі "виправляються".