小编Ana*_*oly的帖子

如果表达式在Scheme中有什么区别?

我定义了一个新版本if:

(define (new-if predicate then-clause else-clause)
    (cond (predicate then-clause)
    (else else-clause)))
Run Code Online (Sandbox Code Playgroud)

然后我用它如下:

(define (sqrt-iter guess x)
  (new-if (good-enough? guess x)
  guess
  (sqrt-iter (improve guess x)
             x)))
Run Code Online (Sandbox Code Playgroud)

据我所知,由于else-clause传递给new-ifsqrt-iter过程始终评估,sqrt-iter从未停止使自身的递归调用.

但我不明白为什么我们在good-enough?return true=> 时不停止guess

scheme

0
推荐指数
1
解决办法
63
查看次数

如何在两个字符串之间添加'/'?

我有以下代码:

if (!string.IsNullOrEmpty(_location.FolderName))
{
    name = _location.FolderName + '/' + name;
}
Run Code Online (Sandbox Code Playgroud)

/在两个字符串之间添加是否正确?或者我应该使用以下代码:

if (!string.IsNullOrEmpty(_location.FolderName))
{
    name = _location.FolderName + "/" + name;
}
Run Code Online (Sandbox Code Playgroud)

c#

0
推荐指数
1
解决办法
199
查看次数

如何在O(1)时空复杂度中找到排列中最大的数?

我有非负整数N,我需要在N的排列中找到最大的数字.

例如,给定N = 213函数应该返回321.

如何在O(1)时间和空间复杂性方面做到这一点?

N是[0 ... 2,147,483,647]范围内的整数

如果结果超出100 000 000我们可以返回-1

c++ algorithm

-1
推荐指数
2
解决办法
717
查看次数

如何提高许多foreach循环的性能?

private void GenerateRecords(JobRequest request)
{
     for (var day = 0; day < daysInRange; day++)
     {
          foreach (var coreId in request.CoreIds)
          {
               foreach (var agentId in Enumerable.Range(0, request.AgentsCount).Select(x => Guid.NewGuid()))
               {
                  for (var copiesDone = 0; copiesDone < request.CopiesToMake; copiesDone++)
                  {
                       foreach (var jobInfoRecord in request.Jobs)
                       {
                             foreach (var status in request.Statuses)
                             {
                                    //DoSomeWork();
                             }
                       }
                   }
               }
          }
     } 
}
Run Code Online (Sandbox Code Playgroud)

有没有办法提高多次迭代的性能?我真的需要所有这些循环,但我想知道如何改进(加速)迭代?也许使用linq?

c# linq performance

-1
推荐指数
1
解决办法
7613
查看次数

如何正确使用Math.Pow()?

我想找到方程的所有正整数解, a^3 + b^3 = c^3 + d^3其中a,b,c,d是1到1000之间的整数;

for (int a = 1; a <= 1000; ++a)
{
    for (int b = 1; b <= 1000; ++b)
    {
        for (int c = 1; c <= 1000; ++c)
        {
            for (int d = 1; d <= 1000; ++d)
            {
                if (Math.Pow(a, 3) + Math.Pow(b, 3) == Math.Pow(c, 3) + Math.Pow(d, 3))
                {
                     Console.WriteLine("{0} {1} {2} {3}", a,b,c,d);
                }
            }
      }
}
Run Code Online (Sandbox Code Playgroud)

我知道d = Math.Pow(a^3 + b^3 - c^3, 1/3) …

c# algorithm

-1
推荐指数
1
解决办法
630
查看次数

如何定期触发一个方法?

public Data GetData()
{
    ...
    updateCache();
}

public void timer()
{
    //I would like to call GetData() every minute
}
Run Code Online (Sandbox Code Playgroud)

我想GetData()每分钟触发一次并更新缓存。

在 C# 中执行此操作的最佳方法是什么?

.net c#

-3
推荐指数
1
解决办法
7724
查看次数

标签 统计

c# ×4

algorithm ×2

.net ×1

c++ ×1

linq ×1

performance ×1

scheme ×1