我從here讀了Big-O符號,並且在計算複雜度方面幾乎沒有問題。因此,對於下面的代碼,我計算了複雜度。需要你的投入相同。以下代碼在內存方面的複雜程度如何?
private void reverse(String strToRevers)
{
if(strToRevers.length() == 0)
{
return ;
}
else
{
reverse(strToRevers.substring(1));
System.out.print(strToRevers.charAt(0));
}
}
如果存儲器因子被認爲是隨後的上述代碼的n個字符的字符串的複雜度是O(n^2)。解釋是對於由n個字符組成的字符串,下面的函數將被遞歸地調用n-1次,並且每個函數調用創建一個單個字符的字符串(stringToReverse.charAT(0))。因此它是n *(n-1)* 2,轉換爲o(n^2)。讓我知道如果這是正確的?
@John:對,它應該是n *(n-1)/ 2 – Cshah 2010-03-28 14:23:55