【发布时间】:2012-10-01 05:21:04
【问题描述】:
我对编程真的很陌生(我是一名电子和通信工程师),我无法弄清楚为什么一个程序有效而另一个程序无效。
在继续学习之前,我想对递归函数有一个很好的了解。我将不胜感激有关此的任何帮助。
我知道 x++ 和 --x 之间的区别。但是在这个程序的上下文中,我认为这两个程序应该以相同的方式运行。但他们没有。
void rec(int x)
{
if(x>0)
rec(x--);
printf("%d",x);
}
int main()
{
rec(4);
_getch();
} /*This doesn't work. And shows a stackoverflow */
void rec(int x)
{
if(x>0)
rec(--x);
printf("%d",x);
}
int main()
{
rec(4);
_getch();
} /*This gives a proper output as expected*/
/*The output is 00123*/
谢谢!
PS:如果这是一个微不足道或愚蠢的问题,请原谅我,但我被困在这个问题上,我认为这是我可以寻求帮助的最佳地点。
【问题讨论】:
-
您确实应该在编译时启用警告和调试信息(例如,在 Linux 上使用
gcc -Wall -g进行编译),并且您应该学习使用调试器(例如,在 Linux 上使用gdb),尤其是 step-逐步执行和显示数据。 -
我目前正在使用 MS Visual Studio(我曾经使用 Turbo C++)。几周前我开始编程。在那之前我读过一点。我认为Visual Studio中应该有一个调试工具,但我还没有弄清楚在哪里。但感谢您的输入。我使用这个工具是因为我的大学将它用于教学目的。
-
'我知道 x++ 和 --x 之间的区别' -- 不。不应该假设自己知道自己试图理解的东西。
标签: c stack-overflow post-increment pre-increment