草庐IT

递归图

全部标签

c# - ASP.NET MVC 3 Razor 递归函数

好的,所以我想显示一个包含列表列表列表的列表......我无法知道要显示多少层,所以我认为这是打破旧的递归例程的地方。虽然我在具体如何解决这个问题上遇到了麻烦。这是我目前所拥有的(在View中-简化):@foreach(MyObjectitemin@Model.ListOfObjects){@item.Title//Callrecursivefunction?}现在每个对象都有一个List。我想显示此div下面的每个级别,例如每个级别都有一个制表符缩进。我原以为这里应该使用Razor函数,但我需要一些帮助来构建它。这是我的想法:@functions{publicstaticvoidSh

c# - 为什么递归构造函数调用会使无效的 C# 代码编译?

观看网络研讨会后JonSkeetInspectsReSharper,我已经开始玩了递归构造函数调用并发现,以下代码是有效的C#代码(有效的意思是它可以编译)。classFoo{inta=null;intb=AppDomain.CurrentDomain;intc="stringtoint";intd=NonExistingMethod();inte=InvalidName众所周知,字段初始化由编译器移至构造函数中。因此,如果您有一个像inta=42;这样的字段,您将在所有构造函数中拥有a=42。但是如果你有构造函数调用另一个构造函数,你将只在被调用的构造函数中有初始化代码。例如,如果您

c# - 为什么 .NET/C# 不针对尾调用递归进行优化?

我找到了thisquestion关于哪些语言优化了尾递归。为什么C#不尽可能优化尾递归?对于具体情况,为什么不将此方法优化为循环(Visual Studio 200832位,如果重要的话)?:privatestaticvoidFoo(inti){if(i==1000000)return;if(i%100==0)Console.WriteLine(i);Foo(i+1);} 最佳答案 JIT编译是一种棘手的平衡行为,既不会在编译阶段花费太多时间(从而大大减慢短期应用程序的速度),又不会进行足够的分析以保持应用程序的长期竞争力-时间编译

c# - 如何在没有无限递归的情况下检查 '==' 运算符重载中的空值?

下面会导致==运算符重载方法无限递归Foofoo1=null;Foofoo2=newFoo();Assert.IsFalse(foo1==foo2);publicstaticbooloperator==(Foofoo1,Foofoo2){if(foo1==null)returnfoo2==null;returnfoo1.Equals(foo2);}如何检查空值? 最佳答案 使用ReferenceEquals:Foofoo1=null;Foofoo2=newFoo();Assert.IsFalse(foo1==foo2);public

c# - C# 如何递归列出目录中的所有文件?

C#中如何递归列出目录及子目录下的所有文件? 最佳答案 请注意,在.NET4.0中内置了(据推测)基于迭代器(而不是基于数组)的文件函数:foreach(stringfileinDirectory.EnumerateFiles(path,"*.*",SearchOption.AllDirectories)){Console.WriteLine(file);}目前我会使用类似下面的东西;如果您无权访问单个子目录,内置的递归方法很容易中断...;Queue用法避免了过多的调用堆栈递归,迭代器block避免了我们拥有一个巨大的数组。sta

c# - 使用 yield return 的 IEnumerable 和递归

我有一个IEnumerable我用来在WebForms页面中查找控件的方法。该方法是递归的,当yieldreturn返回我想要的类型时,我遇到了一些问题。返回递归调用的值。我的代码如下所示:publicstaticIEnumerableGetDeepControlsByType(thisControlcontrol){foreach(Controlcincontrol.Controls){if(cisT){yieldreturnc;}if(c.Controls.Count>0){yieldreturnc.GetDeepControlsByType();}}}这目前会引发“无法转换表达式

javascript - 没有递归函数调用的排列

要求:生成集合所有可能组合的算法,不重复,或者递归调用函数返回结果。PermutationsinJavaScript?提供的大多数(如果不是全部)答案会从循环或其他函数中递归调用函数以返回结果。循环内递归函数调用示例functionp(a,b,res){varb=b||[],res=res||[],len=a.length;if(!len)res.push(b)elsefor(vari=0;i当前的问题试图在线性过程中创建给定的排列,依赖于先前的排列。例如,给定一个数组vararr=["a","b","c"];确定可能排列的总数for(varlen=1,i=k=arr.length;l

javascript - 如何递归地在 ES6 中编写箭头函数?

ES6中的箭头函数没有arguments属性,因此arguments.callee将无法工作,即使只是一个匿名函数也无法在严格模式下工作正在使用中。箭头函数不能命名,所以不能使用命名函数表达式技巧。那么...如何编写递归箭头函数?这是一个箭头函数,它当然会根据特定条件等递归调用自身? 最佳答案 在不命名的情况下编写递归函数是一个与计算机科学本身一样古老的问题(实际上甚至更古老,因为λ演算早于计算机科学),因为在λ演算中所有函数是匿名的,但您仍然需要递归。解决方案是使用定点组合器,通常是Y组合器。这看起来像这样:(y=>y(given

javascript - javascript中的递归 promise

我正在编写一个JavascriptPromise来查找链接的最终重定向URL。我正在做的是使用XMLHttpRequest在Promise中发出一个HEAD请求。然后,在加载时,检查300范围内的某些内容的HTTP状态,或者它是否有附加到对象的responseURL并且该url不同于它是单手的。如果这些都不是真的,我resolve(url)。否则,我在响应URL上递归调用getRedirectUrl()和resolve()。这是我的代码:functiongetRedirectUrl(url,maxRedirects){maxRedirects=maxRedirects||0;if(ma

javascript - 递归过滤对象数组

用这个碰壁,我想我会把它贴在这里,以防有好心人遇到类似的。我有一些看起来像这样的数据:constinput=[{value:'Miss1',children:[{value:'Miss2'},{value:'Hit1',children:[{value:'Miss3'}]}]},{value:'Miss4',children:[{value:'Miss5'},{value:'Miss6',children:[{value:'Hit2'}]}]},{value:'Miss7',children:[{value:'Miss8'},{value:'Miss9',children:[{valu