C# 如何使用递归查找范围之间的偶数?

C# 如何使用递归查找范围之间的偶数?,c#,recursion,C#,Recursion,我在使用递归时遇到问题。我想打印并添加给定范围内两个数字之间的偶数。范围在3到9之间。所以输出应该是:4+6+8=18 printSeries(3,9); Console.WriteLine("=" + sum); int sum = 0; int printSeries(int number, int number2) { if (number < 1) {

我在使用递归时遇到问题。我想打印并添加给定范围内两个数字之间的偶数。范围在3到9之间。所以输出应该是:4+6+8=18

printSeries(3,9);
Console.WriteLine("=" + sum);
int sum = 0;

            int printSeries(int number, int number2)
            {
                if (number < 1)
                {
                    number = 1;
                }
                if (number2 < number)
                {
                    if (number % 2 == 0)
                    {
                        return number;
                    }
                    return number + number % 2;
                }
                else
                {
                    int num = printSeries(number, number2 - 2);
                    Console.Write("+" + num);
                    sum += num;
                    return num += 2;
                }
            }

printSeries(3,9);
控制台写入线(“=”+总和);
整数和=0;
整数打印系列(整数编号,整数编号2)
{
如果(数字<1)
{
数字=1;
}
如果(数字2<数字)
{
如果(数字%2==0)
{
返回号码;
}
返回编号+编号%2;
}
其他的
{
int num=打印系列(数字,数字2-2);
控制台。写入(“+”+num);
sum+=num;
返回num+=2;
}
}
更新:
我得到的输出是正确的,但是当两个数字都是奇数时,会有一个额外的迭代。例如:范围是3,9:4+6+8+10=28。

我不知道您的确切目标,但我测试了您的代码,然后在第二部分更改了您的代码

 private static void Main(string[] args)
    {
        // PrintSeries(7, 13);
        PrintSeries(2, 8);
        Console.WriteLine("=" + sum);
        System.Console.ReadKey();
    }

    private static int sum = 0;
    private static int PrintSeries(int number, int number2)
    {
        if (number < 1)
        {
            number = 1;
        }
        if (number2 <= number)
        {
          if (number % 2 == 0)
            {
                return number;
            }
            return number + number % 2;
        }
        else
        {

            int num = PrintSeries(number, number2 - 2);
            Console.Write("+" + num);
            sum += num;
            return num += 2;
        }
    }
private static void Main(字符串[]args)
{
//印刷系列(7,13);
印刷系列(2,8);
控制台写入线(“=”+总和);
System.Console.ReadKey();
}
私有静态整数和=0;
私有静态整数打印系列(整数编号,整数编号2)
{
如果(数字<1)
{
数字=1;
}
if(number2
string str=”“;
整数和=0;
无效打印系列(整数编号,整数编号2)
{

对于(int i=number;i您可以使用以下内容:

public int SumOfEvenNumbersInRange(int start, int end, IList<int> elements)
{
    int CreateSum(int current, int sum)
    {
        if (current > end)
        {
            return sum;
        }
        else
        {
            elements.Add(current);
            return sum + current + CreateSum(current + 2, sum);
        }
    }

    if (Math.Abs(start) % 2 == 0)
        return CreateSum(start, 0);

    return CreateSum(start + 1, 0);
}
8 + 10 + 12 = 30   // SumOfEvenNumbersInRange(7, 13, elements)
2 + 4 + 6 + 8 = 20 // SumOfEvenNumbersInRange(2, 8, elements)

我问“使用递归”@GracefulFantasy:为了什么目的?这不是一个需要递归才能解决的问题。你是在问家庭作业吗?这段代码在奇数上做得很好,但现在的问题是,当一个数已经是偶数时,它会少加一个数,比如:2,8=4+6+8=18。我希望它是2+4+6+8=20。请再次检查,是否有一个额外的迭代If两个数字现在都是奇数。对不起,我不在系统后面。请您稍后再检查好吗?
var elements = new List<int>();
var sum = SumOfEvenNumbersInRange(7, 13, elements);

if (elements.Count == 0)
{
    elements.Add(0);
}

Console.WriteLine($"{string.Join(" + ", elements)} = {sum}");
8 + 10 + 12 = 30   // SumOfEvenNumbersInRange(7, 13, elements)
2 + 4 + 6 + 8 = 20 // SumOfEvenNumbersInRange(2, 8, elements)