为了账号安全,请及时绑定邮箱和手机立即绑定

如何将此 Python 脚本翻译成 C#?

如何将此 Python 脚本翻译成 C#?

慕少森 2022-11-09 14:51:28
我有一个用 Python 语言编写的脚本,我想看看它在 C# 中的样子。def combis(n):    if n < 0:        return    if n == 0:        yield []    for x in (1, 3, 4):        for combi in combis(n-x):            yield [x] + combi>>> list(combis(5))目前我不明白如何在 C# 中实现这段代码,让我分心的是那些产量以及我的方法应该以哪种类型编写。我目前拥有的东西不起作用且无法理解static int[]  Combs(int n)        {            int[] tusc = { };            if (n < 0)                yield break;            if (n == 0)                yield return tusc;            int[] X = { 1, 3, 4 };            for(int i = 0; i < X.Length; i++)            {                for(j = 0; j <= Combs(n-X[i]).Length; j++)                {                    yield return X + j;                }            }        }当 n 等于 5 时,python 脚本的输出为:>>> list(combis(5))[[1, 1, 1, 1, 1], [1, 1, 3], [1, 3, 1], [1, 4], [3, 1, 1], [4, 1]]当 n 等于 4 时:[[1, 1, 1, 1], [1, 3], [3, 1], [4]]          
查看完整描述

1 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

using System;

using System.Collections.Generic;


namespace HowToTranslateInCSharp

{

    class Program

    {

        static IEnumerable<List<int>> Combis(int n)

        {

            if (n >= 0)

            {

                if (n == 0)

                    yield return new List<int>();

                else

                {

                    foreach (var x in new[] {1, 3, 4})

                    {

                        foreach (var combi in Combis(n - x))

                        {

                            var list = new List<int>() {x};

                            list.AddRange(combi);

                            yield return list;

                        }

                    }        

                }

            }

        }


        static void Main(string[] args)

        {

            var result = Combis(5);


            foreach (var list in result)

            {

                Console.WriteLine($"[{string.Join(" ", list)}]");

            }

        }

    }

}

输出是


[1 1 1 1 1]

[1 1 3]

[1 3 1]

[1 4]

[3 1 1]

[4 1]


查看完整回答
反对 回复 2022-11-09
  • 1 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信