Есть ли оператор, который я могу использовать для прикрепления двух расчетов?

Я делаю домашнее задание, где использую только элементарные операции. Мне нужно закодировать функцию, которая с положительным числом вычисляет всю половину этого числа.

Моя проблема:

int half(int x, int y)
{
    return x == 0 ? y : half(x-1-1, y+1) , x == 1 ? y : half(x-1-1, y+1);
}

Я не знаю, что, если существует какой-либо оператор или что-то, что связывает эти вычисления. В этой строке кода я попытался использовать (,).

Я попытался заменить (,) с помощью ( |) и ( &). Но у меня было много ошибок.


#include <stdio.h>

int sum(int x, int y)
{
    return y == 0 ? x : sum(x+1, y-1);
}

int half(int x, int y)
{
    return x == 0 ? y : half(x-1-1, y+1) , x == 1 ? y : half(x-1-1, y+1);
}

int main(void)
{
    int x;
    int y=0;
    scanf("%d", &x);
    int z = half(x, y);
    printf("%d\n", z);
    return 0;
} 

В этом коде я ожидаю, что результат 6/2 будет 3, а 5/2 будет 2.

Примечание: хотя функция sum ничего не делает, я не могу удалить ее, поскольку домашнее задание говорит, что не следует удалять ее из кода, возможно, мне нужно ее использовать.

1 ответ

Решение

Вы можете просто использовать || собрать их вместе:

int half(int x, int y)
{
    return x == 0 || x == 1 ? y : half(x-1-1, y+1);
}
Другие вопросы по тегам