Реализация факториала через класс [закрыт]

178
23 сентября 2018, 05:00
#include <iostream>
class FactorialClass {
public:
    int factorial(int i) {
        if (i == 0) {
            return 1;
        } else {
            return i * factorial(i-1);
        }
        int n;
        std::cin >> n;
        std::cout << factorial(n);
    }
};
int main() {
    FactorialClass obj;
    obj.factorial();
    system("pause");
    return 0;
}

Не понимаю, почему не работает - выдает ошибку

функция принимает 0 аргументов
Answer 1

Функция

int factorial(int i)

принимает параметр типа int и int же возвращает.

Где в

obj.factorial();

параметр?...

Это уж не говоря о том, что у вас какая-то странная функция с неработающим куском

 int n;
 std::cin >> n;
 std::cout << factorial(n);

Думаю, вы хотели что-то вроде

#include <iostream>
class FactorialClass {
public:
    void factorial()
    {
        int n;
        std::cin >> n;
        std::cout << factorial(n) << std::endl;
    }
    int factorial(int i) {
        if (i == 0) {
            return 1;
        } else {
            return i * factorial(i-1);
        }
    }
};
int main() {
    FactorialClass obj;
    obj.factorial();
    system("pause");
    return 0;
}
READ ALSO
Code::Blocks подсветка кода в defined

Code::Blocks подсветка кода в defined

По отзывам некоторых жителей этого ресурса, установил посмотреть Code::Block

180
Ошибка &ldquo;&#39;recursive_mutex&#39; in namespace &#39;std&#39; does not name a type&rdquo; в C++

Ошибка “'recursive_mutex' in namespace 'std' does not name a type” в C++

Взято из кода движка OGRE3d, компилятор выдает ошибку:

188
Ошибка при сохранении строки в БД

Ошибка при сохранении строки в БД

Вот такой код сохраняет переменные в БД

169