小丑回魂1990 下载:C语言题,有关函数递归调用

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/01 01:03:57
fun(int x)
{ int p;
if(x==0||x==1) return (3);
p=x-fun(x-2);
return p;}
main()
{printf("%d\n", fun(9));}输出结果是?
它调用的步骤是怎么样的?它调用了几次?

hehe 我放到程序下面测试了一下,不过是用php测试的
结果显示是调用了4次。
程序如下:
<?php
function fun($x)
{
if($x==0||$x==1) return (3);
$p=$x-fun($x-2);
echo "调用了";
return($p);
}
echo fun(9);

?>

结果是:调用了调用了调用了调用了7
看看,输出了4次啊

我的理解,调用了5次。
因为当x>=2时,fun(x)会调用fun(x-2)。
由fun9调用fun7,再fun5-fun3-fun1,因为fun1会有返回值:3 停止调用。

补充给cityhuntry兄弟:
最后第5次调用中直接执行return(3)后停止,没有执行到echo 调用了那一句。

答案为:6
调用了四次
第一步:x=9,p=9-fun(7)
第二步:x=7,p=7-fun(5)
第三步:x=5,p=5-fun(3)
第四步:x=3,p=3-fun(1)
fun(1)=0;