函数递归调用问题
帮忙讲解下以下程序运行过程fun(int x)
{
if(x==0||x==1) return 3;
p=x-fun(x-2);
return p;
}
main()
{
printf("%d\n",fun(7));
}
fun(int x) //接受主函数传递的数值,x为7 { if(x==0||x==1) return 3; //判断为真,返回3,并结束fun函数 p=x-fun(x-2); // p从何而来?(把7-2后重新调用自己,如前面的if为真,这里就不执行了) return p; //返回p的值,并结束fun函数(但前面的if为真,这里已经不执行了) } main() { printf("%d\n",fun(7));//把7传递给fun函数的x }