Python到C#代码解释

Ame*_*mes 5 c# python

我的最终目标是将python中的以下代码转换为C#,但我想通过学习python语法来实现自己.我知道代码是递归的.

该代码产生具有k个变量的n次多项式.更具体地说,每个变量的指数列表.

def multichoose(n,k):
    if k < 0 or n < 0: return "Error"
    if not k: return [[0]*n]
    if not n: return []
    if n == 1: return [[k]]
    return [[0]+val for val in multichoose(n-1,k)] + \
        [[val[0]+1]+val[1:] for val in multichoose(n,k-1)]
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止的转换:

public double[] MultiChoose(int n, int k)
{
    if (k < 0 || n < 0)
    {
         throw new Exception();
    }

   if (k == 0)
   {
       return [[0]*n]; // I have no idea what the [[0]*n] syntax means
   }

   if (n == 0)
   {
       return new double[0]; // I think this is just an empty array
   }

   if (n == 1)
   {
       return new double[1] {k}; // I think this is just an empty array
   }

   //Part I don't understand
   return [[0]+val for val in MultiChoose(n-1,k)] + \
        [[val[0]+1]+val[1:] for val in MultiChoose(n,k-1)]
} 
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何转换python代码?

dtb*_*dtb 3

我会在 C# 中使用LINQ来翻译代码:

MultiChoose 的签名为:

 public IEnumerable<IEnumerable<double>> MultiChoose(int n, int k);
Run Code Online (Sandbox Code Playgroud)