JiaWei Lee Ответов: 2

Найдите число между использованием рекурсии в C


создайте функцию для поиска числа между ними с помощью рекурсии
int within(int a[], int N, int lower, int upper, int result[])
Ввод:
int a[] = {4, 1, 3, 1, 3, 2};

Диапазон выходного сигнала от 2 до 3:
{3,3,2}, count = 3

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

int within(int a[], int N, int lower, int upper, int result[])
{
    int count = 0;
    if (N == 1 && a[0] >= lower && a[0] <= upper) return a[0]; // base case
    for(int i = 0; i < N - 1; i ++){
        if (a[i] >= lower && a[i] <= upper){
            return within(&a[0], N - 1, lower, upper,result);
            count++;
        }
        return count;
    }
}

2 Ответов

Рейтинг:
2

Richard MacCutchan

return within(&a[0], N - 1, lower, upper,result);
count++; // this will never be executed, as it follows a return statement


Рейтинг:
1

Patrice T

компилятор, вероятно, жалуется, что "все пути не имеют возврата"

int within(int a[], int N, int lower, int upper, int result[])
{
    int count = 0;
    if (N == 1 && a[0] >= lower && a[0] <= upper) return a[0]; // base case
    for(int i = 0; i < N - 1; i ++){
        if (a[i] >= lower && a[i] <= upper){
            return within(&a[0], N - 1, lower, upper,result);
            count++;
        }
        return count;
    }
    // because a return is missing here
}

ваше требование не имеет для меня никакого смысла. Я не вижу, как вы можете получить 4 в качестве выходного сигнала с образцом ввода.
Ваш код также не имеет для меня никакого смысла. Я не вижу в этом никакой логики.