没什么本质错误 (1) 你的n 是引用,你这样做会改变n本身的值 建议你用 形参 f(int n) (2) 没有考虑溢出,n! 一般值都很大,你做好做一下判断,否者很容易溢出的 比如n多少 反回-1 表示 错误。 你也可以用long 行加大范围 需要比较复杂的计算, 一般公司面试题,考n! 一个是看你会不会用递归,一个是看你考虑溢出了没。