C#数学计算编程最佳实践

C#数学计算编程最佳实践,c#,C#,谁能告诉我在哪里可以阅读最佳实践来编写严重依赖数学计算的应用程序?例如,假设我被要求编写一个生成100个偶数的C#应用程序。我将写以下内容: public void GenerateEven() { for (int i=0;i<100;i++) { Console.WriteLine(i * 2); } } public void GenerateEven(){ 对于(int i=0;i如果要生成数字,可以使用Enumerable.Range,因此: 编

谁能告诉我在哪里可以阅读最佳实践来编写严重依赖数学计算的应用程序?例如,假设我被要求编写一个生成100个偶数的C#应用程序。我将写以下内容:

public void GenerateEven() {
    for (int i=0;i<100;i++) {
        Console.WriteLine(i * 2);
    }
}
public void GenerateEven(){

对于(int i=0;i如果要生成数字,可以使用Enumerable.Range,因此:

编辑:(rotem)


如果要生成数字,可以使用Enumerable.Range,因此:

编辑:(rotem)


是什么让你认为第二种方法是最好的方法呢?如果我被要求做这个问题,那么我会做这个,所以我只循环100次

for (int i = 0; i < 200; i += 2)
    Console.WriteLine(i);
for(int i=0;i<200;i+=2)
控制台写入线(i);
至于你更一般的问题,没有任何一份文件或书籍能为你提供关于如何形成循环或处理数学问题的最佳实践。在这方面,教育有助于分析你的问题并试图找到最佳解决方案


在您的示例问题中,提出的每一个解决方案(包括我提出的解决方案)可以归结为N的a,因此这些解之间的计算差异可以忽略不计。相对于N,增长是线性的。我的解提供的唯一优点是它只循环必要的项以生成输出,而不是跳过不符合条件的项。

你认为第二种方法是什么d是最好的方法吗?如果我被要求做这个问题,那么我会做这个,所以我只循环100次

for (int i = 0; i < 200; i += 2)
    Console.WriteLine(i);
for(int i=0;i<200;i+=2)
控制台写入线(i);
至于你更一般的问题,没有任何一份文件或书籍能为你提供关于如何形成循环或处理数学问题的最佳实践。在这方面,教育有助于分析你的问题并试图找到最佳解决方案


在您的示例问题中,提出的每一个解决方案(包括我提出的解决方案)可以归结为N的a,因此这些解之间的计算差异可以忽略不计。相对于N,增长是线性的。我的解提供的唯一优势是它只循环必要的项以生成输出,而不是跳过不符合条件的项。

实际上,您可能正在寻找D诺拉德克努斯酒店


它被称为所有基本算法的圣经,包含了多种编程算法及其分析。但它没有涵盖任何特定于语言的时刻。

实际上,你可能在寻找Donald Knuth的作品


它被称为
所有基本算法的圣经
,包含多种编程算法及其分析。但它不涵盖任何特定于语言的时刻。

如果您追求表达能力,请阅读函数式编程:

public static IEnumerable<int> EvenNumbers(int start = 0)
{
    while (true)
    {
        yield return start;
        start += 2;
    }
}

这真的取决于你的目标。如果你在寻找构图,上面的内容很好。如果你在寻找原始速度,那么你应该把所有的逻辑混合到一个球中,然后调整它——但这将更难处理。

如果你在追求表现力,请从函数式编程中选择一页:

public static IEnumerable<int> EvenNumbers(int start = 0)
{
    while (true)
    {
        yield return start;
        start += 2;
    }
}


这真的取决于你的目标。如果你在寻找构图,上面的内容很好。如果你在寻找原始速度,那么你应该把所有的逻辑混合到一个球中,然后把它调出来——但这会更难处理。

在c中最好的数学实践是不使用c进行数学计算谁说第二个是b比第一个更好。第一个至少会给出预期的结果,并且不会以无限循环的方式运行。如果这是学术性的东西,我建议你看一下。你可以在其中开发你的数学模型,然后将它编译成一个DLL,你的C#app可以使用。听起来你在寻找它,因为这显然是一个概念性的问题关于软件开发。c#的最佳数学实践是不要将c#用于数学计算,谁说第二种方法比第一种更好。第一种方法至少会给出预期的结果,而不是无限循环运行。如果这是学术性的,我建议你看一看。你可以在其中开发你的数学模型,然后把它编译成你的C#app可以使用的DLL。听起来你在寻找它,因为这显然是一个关于软件开发的概念性问题。-1这个问题不是关于生成numbers@DmitryDovgopoly这个问题只有一个生成数字的例子。否则,我会对调用外部进程说几句好话ses和你一样。即使,
Enumerable.Range(1100)。Select(x=>x*2)。ToList()
的效率更高,时间更短。问题说明:
在哪里可以阅读编写严重依赖数学计算的应用程序的最佳实践?
关于数字的部分只是数据的示例。@DmitryDovgopoly不是一个好问题,也不是一个很好的答案。案例结束。-1问题不是关于生成numbers@DmitryDovgopoly这个问题只有一个关于生成数字的例子。否则,我会像你一样对调用外部进程说几句好话。即使,
Enumerable.Range(1100)。Select(x=>x*2)。ToList()
效率更高且更短。问题指出:
在哪里可以阅读最佳实践来编写严重依赖数学计算的应用程序?
关于数字的部分只是数据的示例。@DmitryDovgopoly不是一个好问题,不是一个很好的答案。案例结束。我相信零是一个.@BrentM.spill我站在公司已更正。答案已更新。我相信零是一个.@BrentM.拼写,我已更正。答案已更新。这是如何工作的?在执行
Take(100)
之前,
evernumbers()
不需要返回吗?我从未使用过这种C模式/习惯用法,它看起来很酷,所以我
var firstHundredEvenNumbers = EvenNumers().Take(100);