永发信息网

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

答案:2  悬赏:20  手机版
解决时间 2021-02-26 12:06
  • 提问者网友:锁深秋
  • 2021-02-26 08:30
int f(int n){
if(n==1)return 1;
else return (n*f(n-1));
}这个函数,比如我输入的是100,最后得出的是个什么数?
时间复杂度是什么?
最佳答案
  • 五星知识达人网友:过活
  • 2021-02-26 08:49
这个函数是用来求阶乘的,用了递归方法。输入100,就会得到100的阶乘。但是由于数值太大,会导致溢出。建议将返回值类型改为 double 型。
计算N的阶乘需要进行N次乘法运算,因此时间复杂度为O(N)。
全部回答
  • 1楼网友:封刀令
  • 2021-02-26 09:02
没什么本质错误 (1) 你的n 是引用,你这样做会改变n本身的值 建议你用 形参 f(int n) (2) 没有考虑溢出,n! 一般值都很大,你做好做一下判断,否者很容易溢出的 比如n多少 反回-1 表示 错误。 你也可以用long 行加大范围 需要比较复杂的计算, 一般公司面试题,考n! 一个是看你会不会用递归,一个是看你考虑溢出了没。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯