Дано массив длины n
, а также требование, чтобы написать программу стоимостьчисло суб-последовательностей длины m
этого заданного массива.Получение справки программирование рекурсивное С
Ниже приведен код для этого. Пожалуйста, посмотрите.
int recCountSubseq(int seqLength, int length, int s[]) {
int answer;
if (seqLength == 0) { /* Base case: found a subseq of correct length */
return 1;
}
if (seqLength >= length) { /* Base case: only possible is seqLength == length*/
return (seqLength==length);
}
/* Recursive case: two branches */
answer = recCountSubseq(seqLength-1, length-1, s); /* s[length-1] is in subseq*/
printf("answer=%d\n", answer);
answer += recCountSubseq(seqLength, length-1, s); /* s[length-1] is not in subseq */
printf("increased answer is %d\n", answer);
return answer;
}
void countSubseq(int seqLength, int length, int s[]) {
printf("#subseq = %d\n", recCountSubseq(seqLength, length, s));
}
int main() {
int length;
scanf("%d", &length);
int seqLength;
int i;
int s[100];
for (i=0;i<length; i++) {
scanf("%d", &s[i]);
}
countSubseq(seqLength, length, s);
return 0;
}
Теперь мой вопрос: Почему значение seqLength
уменьшается каждый раз, и как именно работает этот код?
В вас деле, 'seqLength' должен в конечном счете будет '0', так что рекурсивный вызов' recCountSubseq' прекращается. –
'seqLength' не был инициализирован. Код нарушен и не может быть аргументирован. – user694733
если вы пытаетесь скомпилировать его, он работает и дает количество эльфов в массиве, как я нашел, но я не понимаю, почему seqLength уменьшается –