Позвольте мне начать с того, что я не ищу, чтобы кто-то сделал это для меня. Я надеюсь на намек или предложение.Использование рекурсии для печати строк в C
Я знаю, что есть более умный способ сделать это. Код размещен ниже. Я пытаюсь напечатать план. Мой код работает до глубины 3. (Глубина - это количество подразделов, поэтому 3 будет секцией 1, раздел 1.A и разделом 1.A.1). Он также работает для ширины (количество разделов и каждого типа подраздела) из 26, где он ограничен. Однако, чтобы получить большую глубину, это будет включать в себя гораздо больше циклов. Мало того, что этот ужасный код, он также замораживает терминал, над которым я работаю. Я верю, что рекурсия сделает его намного приятнее, но я изо всех сил пытаюсь понять идею при использовании строки (я понимаю, когда это число). Спасибо!
#include <stdio.h>
int sec(int width, int snum) {
char section[100];
sprintf(section, "Section ");
printf("%s %i", section, snum);
return 0;
}
int ssec_num(int width, int i) {
char num[100];
sprintf(num, "%i", i);
printf(".%s", num);
}
int ssec_let(int width, char z) {
char let[100];
sprintf(let, ".%c", z);
printf("%s", let);
}
int main(int argc, char* argv[]) {
int depth = atoi(argv[1]);
int width = atoi(argv[2]);
int sec_int=1;
int sec_wid = width;
int let_wid;
int num_int;
int num_dep;
int num_wid;
int dep;
char z = 'A';
while(sec_wid > 0) {
sec(width, sec_int);
let_wid = width;
dep = depth-1;
printf("\n");
while(dep > 0) {
while(let_wid > 0) {
num_wid = width;
num_int = 1;
sec(width, sec_int);
ssec_let(let_wid, z);
printf("\n");
num_dep = depth-2;
while(num_dep > 0) {
while(num_wid > 0) {
sec(width, sec_int);
ssec_let(let_wid, z);
ssec_num(width, num_int);
num_wid--;
num_int++;
printf("\n");
num_dep--;
}
}
let_wid --;
z++;
}
dep --;
}
sec_int++;
sec_wid--;
z = 'A';
}
}
Если depth
является 3 и width
является 2, то было бы
Section 1
Section 1.A
Section 1.A.1
Section 1.A.2
Section 1.B
Section 1.B.1
Section 1.B.2
Section 2
Section 2.A
Section 2.A.1
Section 2.A.2
Section 2.B
Section 2.B.1
Section 2.B.2
Показать, что вывод, который вы хотите для какого входа. –
Я не вижу рекурсии здесь, только вложенные петли. – Baldrickk
@Baldrickk: OP думает, что рекурсия - хорошая вещь для того, что он хочет сделать (я не смог это понять). –