Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Time complexity 递归算法的时空复杂度_Time Complexity_Space Complexity - Fatal编程技术网

Time complexity 递归算法的时空复杂度

Time complexity 递归算法的时空复杂度,time-complexity,space-complexity,Time Complexity,Space Complexity,将n转换为其英文单词表示形式,其中0对于大于100000000的所有输入n,函数立即返回空字符串,无需任何计算或递归调用。当然,时间复杂度是O(1),同样的空间复杂度(因为较小的n发生的情况完全不相关) 如果你去掉这条线,情况就会不同,也会更有趣 elif n < 1000000000 谢谢你的回复。比如说,如果我更有效地处理字符串连接(附加/扩展到列表,然后连接这些字符串),那么算法会花费O(logn)时间(O(logn)用于字符串连接+O(logn)用于递归调用=O(logn)总体)

n
转换为其英文单词表示形式,其中0对于大于100000000的所有输入
n
,函数立即返回空字符串,无需任何计算或递归调用。当然,时间复杂度是O(1),同样的空间复杂度(因为较小的
n
发生的情况完全不相关)

如果你去掉这条线,情况就会不同,也会更有趣

elif n < 1000000000

谢谢你的回复。比如说,如果我更有效地处理字符串连接(附加/扩展到列表,然后连接这些字符串),那么算法会花费O(logn)时间(O(logn)用于字符串连接+O(logn)用于递归调用=O(logn)总体)和O(logn)空间(用于递归调用)吗?例如,如果n=99999999。是的,但只有当您删除
n
上的最后一个条件时,否则它是O(1)。为什么它是O(1)?如果n大于最后一个条件,那么,是的,我们立即返回,它是O(1)。但我可以有不同的输入,对吗?如果我删除n上的最后一个条件,我仍然可以有不同的输入。例如,如果我删除了最后一个条件,输入将是999999,那么我将有几个对helper函数的递归调用。这不是需要O(logn)时间吗?是的,我是这么说的:如果删除最后一个条件并更有效地连接字符串,那么现在是O(logn)时间了。很抱歉造成混淆。你是说如果我不删除最后一个条件,并且我的输入将是,例如,999999,那么时间复杂度将是O(1)?
elif n < 1000000000
void f(int n) {
   if (n < 1000000000) {
      for(int i = 0; i < n; i++) { 
         for(int k = 0; k < n; k++)
            print(i); 
      }
   }
   else print("");
}