递归回文问题的时间复杂度,C++

Time complexity of recursive palindrome question, C++

本文关键字:C++ 时间复杂度 回文 问题 递归      更新时间:2023-10-16

我只是想知道如何在这里找到递归函数的时间复杂度。我知道在我的程序的大部分时间里,它都在常量时间 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),其中s是输入大小(在计算理论中使用输入大小作为字符串非常标准(

在任何现有的C++平台上编译,你也可以说它是O(k)int因为大小有限。

因此,这取决于您使用的约定。或者你的教授在课堂上展示的任何东西。