求助,解析这道c语言例题,if(n==1L)是什么意思?

如题所述

1L即为long类型下的数字1。
if(n==1L)) 就是判断n是否等于1的意思。追问

你好,请问一下x=f(4),是把4的值代入形参long n吗? 代入之后return(n*f(n-1))是指返回4*3的值到形参的意思吗?f()函数里面的语句到底是什么意思?我有点看不懂,能帮我解析一下吗

追答

x=f(4) 是把4带入形参,然后将函数返回值赋给x

return n*f(n-1)就是我先计算f(n-1) ,就是先计算n-1的阶乘,然后乘上n作为返回值返回。

追问

一开始n的值是4吗?return(n*f(n-1))的意思就是返回 4*3的值吗?

追答

一开始n的值是4,返回的是4*f(3)

追问

第二次返回的就是3*f(2),然后继续返回2*f(1)吗?然后返回1?

追答

对的!

追问

那最后返回1的返回到形参吗?那最后形参的值是[4*(4-1)]*[3*(3-1)]*[2*(2-1)]*1这样算出来的吗

不对。。写错了

追答

返回值和形参没关系,形参的值也不会被改变。每次调用这个函数都是一个新的过程。

追问

不好意思,耽误你那么多时间,能请问下最后形参的值是怎么算出来24的吗?

追答

f(4)就是4*f(3) ,然后f(3) 就是3*f(2) ,f(2) 就是2*f(1) ,f(1) 就是1. 0。最后就是4*3*2*1.0

追问

好的,谢谢

温馨提示:答案为网友推荐,仅供参考