【发布时间】:2016-02-04 08:39:45
【问题描述】:
在我正在上课的课程中,我的老师不鼓励学生递归调用函数。比如我想在下面的代码中调用main函数:
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);
}
虽然我知道 while 函数是解决这个特定问题的一种更简单的方法,但我们被告知要避免整个递归,尤其是使用 main()。但是,我认为这是在编程中使用的一个相当重要的概念。为什么要避免这种事情,尤其是在调用 main() 时?
【问题讨论】:
-
main()通常会在其中包含一些设置代码和初始化,因此在这种情况下递归通常是一个坏主意。仅在真正有意义时才使用递归——某种分治算法——而不是作为循环的替代品。 -
有时堆栈溢出问题...递归调用函数“有时”会给内存增加很多负担。通常不鼓励这样做。
-
“递归调用函数不是坏事”。从函数调用“main()”IS 不好!如果一个简单的循环可以更好地工作,那么使用递归(这涉及一些开销)也是不好的。这是一个有用的线程:cboard.cprogramming.com/c-programming/…
-
lisp 当然喜欢递归
-
如果您在此部分之前进行任何其他类型的输入或其他任何操作,您的第一个选项将不起作用