高手过来看一下,关于递归和函数压栈
#include <stdio.h>
int recursion(int num);
void main()
{
int num = 4;
recursion(num);
getchar();
}
int recursion(int num)
{
printf("num = %d\n",num);
if (num == 1)
{
return num;
}
else
{
return num *= recursion(num--);
}
}
问题:
这句recursion(num--)有问题,
在第-次递归调用的时候,函数压栈时,参数值为4,正常
在第二次递归调用的时候,函数压栈时,参数值为3,错?
为什么?我理解应该是4,自减操作应该在函数退栈后做阿。
在第三次到栈空间满递归调用的时候,函数压栈时,参数值为3
如果我上面的理解不对的话,那这里为什么不先递减,而是一直是3?
请大家帮忙,最好不要从哪里搞个source贴在这里,希望有人能给一个细致的解释,
谢谢了