c++ - 递归回文问题的时间复杂度,C++
问题描述
我只是想知道如何在这里找到递归函数的时间复杂度。我知道我的程序的大部分时间都是常数时间 O(1) 但我如何计算递归函数的时间复杂度。
int pal(int n, int temp)
{
// Using division of 10 trick
if(n == 0)
return temp;
// Build the number backwards.
temp = (temp * 10) + (n % 10);
// Then advance through the number.
return pal(n / 10, temp);
}
int main()
{
int n = 5678;
int temp = pal(n, 0);
if(temp == n)
cout << "Yes it is a palindrome";
else
cout << "No its not a palindrome";
]
解决方案
它是O(log(n))
,其中 n 是数字。
但它也是O(s)
,shere s 是输入大小(计算理论中使用输入大小作为字符串的相当标准)
在任何现有的 C++ 平台上编译,您也可以说这是O(k)
因为int
' 具有有限的大小。
因此,这取决于您使用的约定。或者你的教授在课堂上展示的任何东西。:-)
推荐阅读
- java - 在arrayList中搜索一个项目,从输入中比较它并删除它
- php - 如何对发出 HTTP 请求的方法进行单元测试?
- javascript - 查询字符串模块中的字符串化在 Jest 测试中未按预期工作
- r - 使用 ggplot2 和 marmap 绘制水深和海岸线
- security - Magento 安全扫描工具无法识别补丁 SUPEE 10415
- r - 函数作为 R 中函数的参数
- python - Pandas - 过滤 DF 以仅包含每列为 FALSE 的行
- php - 变量赋值和检查
- python - APPJAR PYTHON 创建一个根据用户输入而变化的输入框网格
- if-statement - 我是否需要在每个服务器块中声明 if 语句