C# 如何使用递归查找范围之间的偶数?
我在使用递归时遇到问题。我想打印并添加给定范围内两个数字之间的偶数。范围在3到9之间。所以输出应该是:4+6+8=18C# 如何使用递归查找范围之间的偶数?,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) {
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(number2string 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)