C 程序崩溃

C 程序崩溃,c,recursion,C,Recursion,节目- 接受当前年份和出生年份的函数,计算年龄 问题- 程序崩溃 代码- int Age(int curr, int birth) { if (curr > birth) { return 1 + Age(curr--, birth); } return 0; } 主功能中的输入为: printf ("%d\n", Age(2014,1989)); 谢谢你的帮助应该是 ... Age(--curr, birth); ascurr应在调用Age()之前递减 使用curr-

节目-

接受当前年份和出生年份的函数,计算年龄

问题-

程序崩溃

代码-

int Age(int curr,  int birth)
{
if (curr > birth)
{
    return  1 + Age(curr--, birth);
}
return 0;
}
主功能中的输入为:

printf ("%d\n", Age(2014,1989)); 
谢谢你的帮助

应该是

... Age(--curr, birth);
as
curr
应在调用
Age()
之前递减

使用
curr--
减量
curr
通过
curr--
应用于
curr--
的减量在
Age()
返回后生效,这是永远不会发生的,因为程序由于尝试无限递归而遇到堆栈溢出。

应该这样做

... Age(--curr, birth);
as
curr
应在调用
Age()
之前递减


使用
curr--
减量
curr
通过
curr--
应用于
curr--
的减量在
Age()
返回后生效,这是永远不会发生的,因为程序由于尝试无限递归而遇到堆栈溢出。

我想这可以简单地按如下方式完成

age = curr-birth-1

不用担心递归。

我想这可以简单地按如下方式完成

age = curr-birth-1
不用担心递归。

curr--
中,您正在执行后递减,递减将影响下一行。因此传递给函数的值始终与
curr
相同, 您应该执行'--curr',这样它将在调用函数之前递减curr值

curr--
中,您正在执行后减量,减量将影响下一行。因此传递给函数的值始终与
curr
相同,

您应该执行'--curr',这样它将在调用函数之前递减curr值

崩溃还是无限地奔跑?更改为
--curr
。为什么要对简单的数学方程使用递归?为什么要使用
--
?修改后的变量以后永远不会使用<代码>cur-1就足够了。崩溃还是无限运行?更改为
--curr
。为什么要对简单的数学方程使用递归?为什么要使用
--
?修改后的变量以后永远不会使用
cur-1
就足够了。谢谢您的帮助,如果您能告诉我为什么会发生这种情况,它应该是
curr-1
,没有理由在这里使用are或post-decrement。不,对不起,文本仍然不正确。实际上,(在C计算模型中)在调用
Age
之前,会发生
curr
的递减。如果
curr
是全局的并且
Age
打印了它的值,那么
Age
打印的值将显示
curr
已经递减,即使
Age
接收的参数值不包含递减。正确的文本将是“通过
curr--
应用于
curr
的减量不影响
Age
参数所用的值。传递到
Age
的值是
curr
减量之前的
curr
值。”为什么要使用
--
呢?修改后的变量从未使用过。只需使用
curr-1
。感谢您的帮助以及为什么会发生这种情况,如果您能告诉我,它应该是
curr-1
,没有理由在这里使用are或post decreation。不,对不起,文本仍然不正确。事实上,
curr
的减量是需要的e位置(在C计算模型中)在调用
Age
之前。如果
curr
是全局的并且
Age
打印了它的值,则
Age
打印的值将显示
curr
已递减,即使
Age
接收的参数值不包含递减。正确的文本将是“通过
curr--
应用于
curr
的减量不影响
Age
参数所用的值。传递到
Age
的值是
curr
减量之前的
curr
值。”为什么要使用
--
呢?修改后的变量从来没有被使用过。只要使用
curr-1
@alk-它就可以了-这就是问题的本质。为什么要让生活变得复杂?@alk我只是让他简化代码。你回答的是他的问题的正确解决方案。curr-是后减量,因此会减量执行该语句后的注释电流。@all:我只是重新阅读了答案,并立即删除了我的注释。但是“使用递归”很可能是赋值的一部分…?通常是兔子或斐波那契递归involved@alk-是的-这是问题本质的答案。为什么让生活变得复杂?@alk我只是让他简化代码。你回答的是他的问题的正确解决方案。curr-是后减量,因此在执行该语句后,ll减量curr。@all:我刚刚重新阅读了答案,并立即删除了我的注释。然而,“使用递归”可能是赋值的一部分…?通常递归涉及兔子或斐波那契