int f(int &n){int f=1;while(n>1){f*=n;n--;}return f;这个求n!的函数有什么问题

2025-03-01 20:08:12
推荐回答(1个)
回答1:

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