第九题 答案为什么是c
展开全部
fun(7); [x=7]
x==0或x==1不成立,不执行return(3); 执行else p=x-fun(x-2); [p=7-fun(5)]
fun(5) [x=5]
x==0或x==1不成立,不执行return(3); 执行else p=x-fun(x-2); [p=5-fun(3)]
fun(3) [x=3]
x==0或x==1不成立,不执行return(3); 执行else p=x-fun(x-2); [p=3-fun(1)]
fun(1) [x=1]
x==0或x==1成立,执行return(3); 返回值3
继续计算p=3-fun(1)=3-3=0,return p;返回值0
继续计算p=5-fun(3)=5-0=5,return p;返回值5
继续计算p=7-fun(5)=7-5=2,return p;返回值2
所以主程序中输出:2
关键点:递归调用时,函数变量每调用一次均是新开设的变量,与上层调用的同名变量不是一个,没有关系,也不会传导原来的值,可以理解第1次调用的变量x叫x1,第二次用x2,...以此类推,避免混淆计算。
x==0或x==1不成立,不执行return(3); 执行else p=x-fun(x-2); [p=7-fun(5)]
fun(5) [x=5]
x==0或x==1不成立,不执行return(3); 执行else p=x-fun(x-2); [p=5-fun(3)]
fun(3) [x=3]
x==0或x==1不成立,不执行return(3); 执行else p=x-fun(x-2); [p=3-fun(1)]
fun(1) [x=1]
x==0或x==1成立,执行return(3); 返回值3
继续计算p=3-fun(1)=3-3=0,return p;返回值0
继续计算p=5-fun(3)=5-0=5,return p;返回值5
继续计算p=7-fun(5)=7-5=2,return p;返回值2
所以主程序中输出:2
关键点:递归调用时,函数变量每调用一次均是新开设的变量,与上层调用的同名变量不是一个,没有关系,也不会传导原来的值,可以理解第1次调用的变量x叫x1,第二次用x2,...以此类推,避免混淆计算。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询