繁体   English   中英

我如何在 c# 中编写一个程序来计算指数的平方?

[英]How can i write a program in c# which can calculate the square of index's numbers?

我正在尝试解决一个算法示例。 会有一个数组。我需要计算这个 arrays 索引号的平方。 Output 应该是:“0-1-4-9-16-25-36-49-64-81”,因为索引号以 0-9 开头。

我搜索了 web。但我找不到任何东西。我认为我们需要像这样声明一个数组:

int[] a = new int[10];

但我不知道在那之后该怎么做。我们是否应该接受用户的输入?

如果有人知道 python,这是 python 代码:

from numpy import
indis = arrange(0,10)
for dizi in indis:
    dizi=dizi**2
    print(dizi, end=" ")

谢谢您的帮助。

for(int i=0; i<10; i++){
   Console.WriteLine(i*i);
}

这个怎么样 - 它更像是 python

   var sq = Enumerable.Range(0,9).Select(x=>x*x).ToArray();
   foreach(var s in sq)
       Console.WriteLine(s);

或者可能

 var sq = Enumerable.Range(0,9).ToArray();
   foreach(var s in sq)
       Console.WriteLine(s*s);   

这更接近 python

由于您显然从 Python 移动到 C#,因此让我们从 Python 开始(可能是我第一次用这种语言编写代码......)。

在这里,到目前为止我发现了什么:

  1. Python 没有(内置)arrays。那个 NumPy 一定是某种图书馆。
  2. Python 的 for 循环非常受限制。 “正常”习语不存在。 但是有一个相当模糊的(除非 Python 像 Haskell 一样懒惰) range()东西,它可能会也可能不会被优化掉。

由于2.,你没有清楚地看到手头的问题,因此,当你转移到C#时,你没有看到明显的优化。在那里(在C#中),没有人会创建一个临时数据结构(例如一个数组)具有连续数量的整数,然后对其进行迭代。 这在许多层面上都是浪费和晦涩的。

因此,在 Python 的限制下,为了避免range()开销,您可能会这样写:

def meh(arr):
    i = 0
    while i < len(arr):
        print(i*i)
        i = i + 1

当然,上面的参数arr将是一个列表,而不是数组,因为 1。

如果您将那部分(优化的)代码翻译成 C#,它看起来像:

void meh<T>(T[] arr) {
  for (int i = 0; i < arr.Size; i++) {
    print(i*i)
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM