关于#c语言#的问题:return带回的值是带回到哪里呢

img


为什么f(99)=91呢?计算到f(110)之后不应该return110-10=100吗?return带回的值是带回到哪里呢?

f函数中else分支返回的是 f(f(n+11))而不是f(n+11),因为else分支中x=f(n+11)而不是x=n+11。
f(99)走的是else分支,先求出x=f(99+11)=f(110)=100,再返回f(x),也就是f(100),f(100)继续走else分支,先求出x=f(100+11)=f(111)=101,再求f(x)=f(101)走if分支返回91。最终结果返回91。
函数的返回值会先存放到栈中,递归调用函数会将返回值入栈,调用完成后出栈。