计划 -
接受当前年份和出生年份的功能,计算年龄
问题 -
程序崩溃
代码 -
int Age(int curr, int birth)
{
if (curr > birth)
{
return 1 + Age(curr--, birth);
}
return 0;
}
函数main中的输入是:
printf ("%d\n", Age(2014,1989));
感谢您的帮助
答案 0 :(得分:6)
应该是
... Age(--curr, birth);
因为curr
将在调用Age()
之前递减。
使用 curr--
递减curr
curr
的{{1}}应用的减量在curr--
返回后生效,永远不会发生这种情况,因为程序由于尝试无限递归而遇到堆栈溢出。
答案 1 :(得分:1)
我想这可以简单地完成
age = curr-birth-1
不用担心递归。
答案 2 :(得分:1)
在curr--
你正在减少后,减量会影响下一行。所以传递给函数的值总是与curr
相同,
你应该做'--curr'所以它会在调用函数之前减少curr值。