又一道题需要解答

来源:百度知道 编辑:UC知道 时间:2024/06/05 17:20:10
fun(int x)
{int p;if(x==0||x==1)return(3);
p=x-fun(x-2);
return p;}
main()
{printf ("%d\n",fun(7));}
运行结果
麻烦给个解释,why

这是个无聊的递归,没什么具体作用,就是看看你懂不懂递归而已
那就一步步来 首先 fun(7)=7-fun(5) fun(5)又是个递归表达 继续算
fun(5)=5-fun(3)
fun(3)=3-fun(1)
直到fun(1)程序才开始返回 if(x==0||x==1)return(3);所以程序返回了3
fun(1)=3
fun(3)=3-fun(1)=3-3=0;
fun(5)=5-fun(3)=5-0=5;
fun(7)=7-fun(5)=2;
所以fun(7)是2 了

不明白再问我 :-)

结果为2