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);
ascurr
应在调用Age()
之前递减
使用curr--
减量curr
通过curr--
应用于curr--
的减量在Age()
返回后生效,这是永远不会发生的,因为程序由于尝试无限递归而遇到堆栈溢出。应该这样做
... Age(--curr, birth);
ascurr
应在调用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:我刚刚重新阅读了答案,并立即删除了我的注释。然而,“使用递归”可能是赋值的一部分…?通常递归涉及兔子或斐波那契