Japanese Relaxation Ответов: 1

Нужна рекомендация проверить мою работу


Напишите программу, которая позволит пользователю ввести целое число. Программа должна вызвать рекурсивный метод, который определяет, является ли число одним из двоичных кратных чисел (2, 4, 8, 16, 32, 64, выполните это без использования каких-либо булевых переменных.

Что я уже пробовал:

int isMultiple2(int x)
{
    if (x == 1)
    {
        return 1;
    }
    else if (x % 2 == 0) 
    {
        return isMultiple2(x / 2);
    }
    else 
    {
        return 0;
    }
}
int main() 
{
    int x;
    cout << "Enter the integer:";
    cin >> x;
    if (x == 1)
    {
        cout << "No the number is one of the binary multiples! ";
    }
    else {
        if (isMultiple2(x) == 1)
        {
            cout << "Yes the number is one of the binary multiples! ";
        }
        else
        {
            cout << "No the number is one of the binary multiples! ";
        }
    }
}

Greg Utas

Вам нужно запустить это, чтобы проверить его. Несколько предложений:
1. Проверить, если входные данные имеют отрицательное целое число. Что вы хотите делать в таком случае?
2. правильный английский язык был бы "нет, число не является одним из двоичных кратных!"
3. Вы можете захотеть << endl; в конце каждого cout.

Japanese Relaxation

Если вы не возражаете, можете показать мне код?

Greg Utas

Вы должны написать код самостоятельно.

1 Ответов

Рейтинг:
1

OriginalGriff

Важной частью любой разработки является тестирование и проверка: это та часть, которую вы должны делать сейчас.

И одна вещь, которую я сразу замечаю, заключается в том, что ваша функция "двоичных кратных" не делает того, что строго требует описание. Если я передам его 1, он должен вернуть 0, потому что список допустимых значений не включает 1 - он вернет 1, а не 0. Ваше приложение возвращает правильный результат, потому что у вас есть определенный тест для unity перед вызовом функции - но это не то, о чем вас спрашивает вопрос:

Цитата:
Программа должна вызвать рекурсивный метод, который определяет, является ли число одним из двоичных кратных чисел (2, 4, 8, 16, 32, 64, и т.д.).
Согласно строгой интерпретации проблемы, эта функция не пройдет тестирование, хотя приложение пройдет.