求解这个递归的意思
#include <stdio.h>
int main()
{
printf("%d",fun());
return 0;
}
int fun()
{
static int a=4;
if(a==1)
return 1;
else
{
a--;
return (a+1)*fun(); // 这个fun的值是多少?
}
return 0;
}
[解决办法]
楼主这个简单的递归看不出来吗?建议单步调试
调用开始执行顺序:1. a==4 a-- 4*fun
2. a==3 a-- 3*fun
3. a==2 a-- 2*fun
4. a==1 1
所以结果就是:1*2*3*4
[解决办法]
理解递归粗暴的方法就是将之当成另一个函数调用.
func() = 4*func()
3 * func()
2 * func()
1
= 4*3*2*1.