В классе, который я принимаю, мой учитель не поощряет студентов от вызова функций рекурсивно. Например, если я хочу, чтобы вызвать основную функцию в следующем коде:Почему плохо вызывать функции рекурсивно?
if (x > 5) {
printf("Your number's too high. Enter a number below 5.");
main();
}
Я вместо этого рекомендуется использовать:
int x;
while (x > 5) {
printf("\nYour number's too high. Enter a number below 5.");
scanf("%d", &x);
}
Хотя я понимаю, что функция в то время как более простой способ идя по этой конкретной проблеме, нам говорят избегать рекурсии в целом, особенно с main(). Однако я думал, что это довольно важная концепция, используемая в программировании. Почему этого следует избегать, особенно при вызове main()?
'основной()', как правило, имеют некоторый код установки и инициализации в нем, так это вообще плохая идея рекурсии в этом случае. Используйте рекурсию только тогда, когда она действительно имеет смысл - какой-то алгоритм разделения и покорения, а не как замена цикла. – javanut13
иногда проблемы с переполнением стека ... вызов функции рекурсивно добавляет большую нагрузку на память «иногда». Это обычно не поощряется. – beebee
Это не «плохой вызов функции рекурсивно». Это * IS * плохо называть «main()» функцией! Также плохо использовать рекурсию (которая связана с некоторыми накладными расходами), если простой цикл будет работать лучше. Вот полезный поток: http://cboard.cprogramming.com/c-programming/8216-when-use-recursion.html – paulsm4