Как мне обработать рекурсию и массивы в C? - PullRequest
2 голосов
/ 11 февраля 2011

Итак, у меня есть следующая рекурсивная функция:

int printSeq(int last[], int n, int arr[], int longest){

     if(last[longest]==longest) return arr[longest];
     printf("%d ", printSeq(last, n, arr, last[longest]));
}

last - это массив с позициями, указывающими на массив.Самое длинное - текущее местоположение.

Однако, когда я запускаю его, я получаю странные значения, которых нет в массиве.Я что-то упустил?

Базовый случай - это когда последний [самый длинный] указывает на собственное местоположение

1 Ответ

10 голосов
/ 11 февраля 2011

Функция не return любое значение после printf.Это приводит к неопределенному поведению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...