回复 5楼 编译中。。
其实是递归调用,return 0建议楼主去看看C语言陷阱与缺陷第三章的部分,网上有下电子版的,书上说是为了返回main函数的值用的,其他的楼主既然明白了我就不说了
追问,return 1 ; 的问题。 当你输入的数为1的时候,确实直接输出1.这是你的解释。 但当那个a *= factorial(a-1); 被执行很多次之后 ,a就会变成1了,那a==1 不就是成立了,对吧。 既然成立了,他就会 把 1 这个值返回给 f 。那最后的输出不是应该是1 吗?
这么说 吧。 输入3 这个数字 a *= factorial(a-1); 第一次执行的时候, a是 3-1 第二次的时候a是 3-2
第三次循环是,a已经为1了,那么 if就成立了,成立了 他就会 return 1; 那为什么f的结果 不是1.