21 Востаннє редагувалося Joker (16.06.2015 22:04:31)

Re: Вказівники

Відносно 3 завдання
Код з використанням тільки змінних

Прихований текст
#include <iostream>
using namespace std;

int Factorial(int b) 
{
    if (b > 0)
        return Factorial(b - 1) * b;
    return 1;
}

int main()
{
    int a;
    cout << "Enter a --> ";
    cin >> a;

    cout << "Result = " << Factorial(a) << endl;

    system("pause");
    return 0;
}

А тепер я пробував з використанням вказівників

Прихований текст
#include <iostream>
using namespace std;

int Factorial(int *b)
{
    if (*b > 0)
        return Factorial(*b - 1) * *b;
    else
        return 1;
}

int main()
{
    int *a = new int;
    cout << "Enter a --> ";
    cin >> *a;

    cout << "Result = " << Factorial(a) << endl;

    delete a;

    system("pause");
    return 0;
}

Але програма не працює :(

22 Востаннє редагувалося YurkoFlisk (17.06.2015 12:46:16)

Re: Вказівники

У вас Factorial приймає вказівник на int, а ви рекурсивно передаєте туди число. Оскільки int - цілочисельний тип, то він легко конвертується у вказівник, тому немає помилки компіляції, але є помилка виконання:

return Factorial(*b - 1) * *b;