递归方法会增加圈数复杂度吗

发布于 2024-09-15 22:04:17 字数 410 浏览 8 评论 0原文

我目前没有安装任何用于测量圈数代码复杂性的程序。但我想知道递归方法是否会增加复杂性?

例如,

// 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;
        }
    }
}

谢谢。

I do not have any programs installed for measuring cyclomatric code complexity at the moment. But I was wondering does a recursive method increases the complexity?

e.g.

// 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;
        }
    }
}

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

与之呼应 2024-09-22 22:04:17

据我了解,没有。在您的示例中,递归方法只有一条线性独立的路径,因此它不会增加圈复杂度。

As far as I understand, no. There is only one linearly independent path to the recursive method in your example, so it wouldn't increase the cyclomatic complexity.

终难遇 2024-09-22 22:04:17
  1. 循环确实增加了圈复杂度。
  2. 通常可以使用递归加保护条件来重写循环。

即使递归调用本身不严格算作增量,但保护条件却算作增量。这使得循环和递归+保护不相上下。

  1. Loops do increase cyclomatic complexity.
  2. A loop can often be rewritten using recursion plus a guard condition.

Even if the recursive call itself would not count strictly as an increment, the guard condition does. This makes the loop and recursion+guard on par.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文