繁体   English   中英

如何进行递归 function 接收数组,找到它的总和以及除以总和的数组中的整数

[英]How to do a recursion function that receives an array, find the sum of it and the integers in the array that divide the sum

我需要一些帮助来在 C# 中创建递归 function。

function 接收一个int数组,它找到它的总和并打印数组中除总和的所有数字。

您不能在 function 内创建循环或创建单独的循环。

我的想法是这样的,但它不起作用。

    static public void print(int[] array, int sumIndex = 0, int sum = 0,int devIndex = 0)
    {
        if (sumIndex < array.Length)
        {
             sum = sum + array[sumIndex];
             print(array, sumIndex++, sum, devIndex);
        }
        else
        {
            if (sum % array[devIndex] == 0) 
            {
                 Console.WriteLine(array[devIndex]);
                 print(array, sumIndex, sum, devIndex++);
            }
        }
    }

晚上好,我相信您的问题是您使用的是 PostIncrement 运算符而不是预增量运算符。 改变

print(array, sumIndex++, sum, devIndex);

print(array, sumIndex, sum, devIndex++);

print(array, ++sumIndex, sum, devIndex);

print(array, sumIndex, sum, ++devIndex);

这两者之间的区别在于,第一个将值传递给 function(假设为 1),然后在第二个将其递增的地方递增(因此将其从 1 更新为 2),然后将其传递给 function。

所以目前你的代码将永远递归只处理数组中的第一个值!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM