int f(int n){ if(n==1)return 1; else return (n*f(n-1)); }这个函数有什么作用?时间复杂度是?

2025-03-26 14:16:27
推荐回答(1个)
回答1:

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