【发布时间】:2016-05-29 23:56:02
【问题描述】:
我正在努力使我的表演技能(不存在)达到标准,但在将公式写入代码时遇到了问题。这是我要尝试的公式 - 引用 unquote - “转换”为代码。
考虑一个序列 u,其中 u 定义如下:
号码
u(0) = 1是u中的第一个号码。 对于u中的每个x,那么y = 2 * x + 1和z = 3 * x + 1也必须在u中。u中没有其他号码。 例如:u = [1, 3, 4, 7, 9, 10, 13, 15, 19, 21, 22, 27, ...]
1给出3和4,然后3给出7和10,4给出9和13,然后7@0 和@89 987654341@等等……
这就是我目前所拥有的:
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
Console.WriteLine(DblLinear(10));
//Expected result: 22
Console.WriteLine(DblLinear(20));
//Expected result: 57
Console.WriteLine(DblLinear(30));
//Expected result: 91
Console.WriteLine(DblLinear(50));
//Expected result: 175
}
public static int DblLinear (int n)
{
List<int> linArr = new List<int>();
linArr.Add(1);
int i = 0;
while(linArr.Count < n)
{
linArr.Add((2 * linArr[i]) + 1);
linArr.Add((3 * linArr[i]) + 1);
linArr.Sort();
i++;
}
return linArr[n - 1];
}
}
在达到 27 之前,计算都是正确的。在那之后,它就疯狂了,我不知道它做错了什么。
【问题讨论】:
-
您是否使用调试器单步执行了代码?
-
在添加之前,您没有检查号码是否已经存在。你会有重复的。
标签: c# performance sequence formula