【发布时间】:2013-11-15 10:53:50
【问题描述】:
我正在学习 C,我想出了这个例子
#include <stdio.h>
int MyAdd(int);
main ()
{
int i;
int c = 0;
c = MyAdd(5);
printf("%d\n", c);
}
int MyAdd(int a)
{
if(a > 0)
return a + MyAdd(--a);
else
return 0;
}
我自己运行它,我计算出 15。(5 +4+3+2+1)但是当我运行它时,我得到 10...为什么? 在第一次时,我们不会得到 5+(再次执行函数)等等吗?
【问题讨论】:
-
add_two 是什么功能?我们有
main,你不打电话给add_Twoint和add_two -
这不是嵌套的,它是递归的。
-
ok 标题已编辑
-
先递减操作。试试
return a + Add_Two(a-1);