程序崩溃

时间:2014-01-18 13:06:06

标签: c recursion

计划 -

接受当前年份和出生年份的功能,计算年龄

问题 -

程序崩溃

代码 -

int Age(int curr,  int birth)
{
if (curr > birth)
{
    return  1 + Age(curr--, birth);
}
return 0;
}

函数main中的输入是:

printf ("%d\n", Age(2014,1989)); 

感谢您的帮助

3 个答案:

答案 0 :(得分:6)

应该是

... Age(--curr, birth);

因为curr将在调用Age()之前递减。

使用curr--递减curr curr的{​​{1}}应用的减量在curr--返回后生效,永远不会发生这种情况,因为程序由于尝试无限递归而遇到堆栈溢出。

答案 1 :(得分:1)

我想这可以简单地完成

age = curr-birth-1

不用担心递归。

答案 2 :(得分:1)

curr--你正在减少后,减量会影响下一行。所以传递给函数的值总是与curr相同, 你应该做'--curr'所以它会在调用函数之前减少curr值。