下面给出了阶乘计算的两种方式。以下说法正确的是( )。
int factorial1(int n) { if (n <= 1) return 1; return n * factorial1(n - 1); } int factorial2(int n) { int acc = 1; while (n > 1) { acc = n * acc; n = n - 1; } return acc; }
上面两种实现方式的时间复杂度相同,都为 O(n)O(n)O(n)
上面两种实现方式的空间复杂度相同,都为 O(n)O(n)O(n)
上面两种实现方式的空间复杂度相同,都为 O(1)O(1)O(1)
函数 factorial1() 的时间复杂度为 O(2n)O(2^n)O(2n),函数 factorial2() 的时间复杂度为 O(n)O(n)O(n)
factorial1()
factorial2()