Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# %=是否将获取集合的模块?_C# - Fatal编程技术网

C# %=是否将获取集合的模块?

C# %=是否将获取集合的模块?,c#,C#,这就是我到目前为止得到的传递到Mod方法的集合的模数 public static void Mod(int[] nums) { int total = 0; foreach (int num in nums) { if (total == 0) { total = num; } else { total %= num; }

这就是我到目前为止得到的传递到Mod方法的集合的模数

public static void Mod(int[] nums)
{
    int total = 0;
    foreach (int num in nums)
    {
        if (total == 0)
        {
            total = num;
        }
        else
        {
            total %= num;
        }
    }
    Console.WriteLine("Mod: " + total);
}

我想知道的是,这是找到这个的正确方法,还是我会得到完全错误的答案;是的,你会得到正确的结果;只要您希望结果是余数的余数,依此类推数组的长度。在这方面,我同意flydog57的评论:

现在,我从未有过使用%=;我觉得有点奇怪

我们都知道x%=y和x=x%y是一样的;在这个用例中,我们可以使用%=来简化代码。如果要求您执行顺序模数运算,得到90/72的余数,然后得到该余数的余数,则您的解决方案是正确的。但是,如果您的问题不是连续模,请更新您的问题以澄清

另一方面,您的代码可以简化和改进:

public static int Mod(int[] nums) {
    int result = nums[0];
    for (int i = 1; i < nums.Length; i++) {
        // Division of zero is zero, and division by zero is only allowed with doubles.
        if (result == 0 || nums[i] == 0)
            return 0;

        result %= nums[i];
    }

    return result;
}

public static void Main(string[] args) {
    int[] nums = new int[] { 300, 205, 90, 72, 15, 6 };
    Console.WriteLine($"Result: {Mod(nums)}");
    Console.ReadKey();
}

上面的代码将得到5,因此使用您需要的值执行您的数学运算,并查看答案是否符合您的预期。如果没有,请使用您的值和期望的答案更新您的问题。

您是否使用此代码获得正确答案?您能否共享一些示例输入和预期输出?按集合的模数,您是指集合总和的模数吗?我不确定你希望得到什么结果。收藏的模数是多少?模数是除法后的余数。例如,11%3是2 11/3*3是9,11-9是2。我从未见过它与一对以上的数字一起使用。现在,我从未有过使用%=操作符的冲动;我觉得有点奇怪。你所做的就是在一个集合中穿行——天哪,我甚至不能描述你的代码是做什么的。你有一个你想要的结局的定义吗?在实际测试之前我问了这个问题,这是我的错。我得到了我想要的谢谢你抽出时间。