2010-08-20 72 views
6

Tôi không có bất kỳ chương trình nào được cài đặt để đo độ phức tạp của mã cyclomatric tại thời điểm này. Nhưng tôi đã tự hỏi không một phương pháp đệ quy làm tăng sự phức tạp?Phương pháp đệ quy làm tăng độ phức tạp của cyclomatric

ví dụ:

// just a simple C# example to recursively find an int[] 
// within a pile of string[] 
private int[] extractInts(string[] s) 
{ 
    foreach (string s1 in s) 
    { 
     if (s1.ints.length < 0) 
     { 
      extractInts(s1); 
     } 
     else 
     { 
      return ints; 
     } 
    } 
} 

Cảm ơn.

+1

Gốc 'int []' trong mã của bạn ở đâu? – strager

+1

_ Độ phức tạp của ô_ phụ thuộc vào số đường dẫn độc lập trong mã của bạn. Dịch gần như được dịch để tìm nhánh. Phép đệ quy không cần thiết ngụ ý nhiều đường dẫn điều khiển. Tôi sẽ nguy hiểm khi đoán rằng không nhất thiết phải có sự tương ứng giữa sự đệ quy và độ phức tạp chu kỳ cao. – dirkgently

Trả lời

4

Theo như tôi hiểu, không. Chỉ có một đường dẫn độc lập tuyến tính với phương thức đệ quy trong ví dụ của bạn, vì vậy nó sẽ không làm tăng độ phức tạp của chu trình.

1
  1. Vòng làm tăng độ phức tạp của chu trình.
  2. Vòng lặp thường có thể được viết lại bằng cách sử dụng đệ quy cộng với điều kiện bảo vệ.

Ngay cả khi chính cuộc gọi đệ quy sẽ không được tính đúng như số gia tăng, điều kiện bảo vệ sẽ thực hiện. Điều này làm cho vòng lặp và đệ quy + bảo vệ ngang hàng.

Các vấn đề liên quan