为了纪念Stack Overflow的公开发布,导致堆栈溢出的最短代码是什么?任何语言欢迎.
ETA:只是要明确这个问题,因为我偶尔会看到一个Scheme用户:尾调用"递归"实际上是迭代,任何可以通过合适的编译器相对简单地转换为迭代解决方案的解决方案都不会算一算 :-P
ETA2:我现在选择了"最佳答案"; 看这篇文章的理由.感谢所有贡献的人!:-)
可能重复:
JavaScript:var functionName = function(){} vs function functionName(){}
有什么区别:
function sum(x, y) {
return x+y;
}
// and
var sum = function (x, y) {
return x+y;
}
Run Code Online (Sandbox Code Playgroud)
为什么一个用于另一个?
有没有办法在Scala中编写一个递归的匿名函数?我在考虑这样的事情:
((t: Tree) => {
print(t.value);
for (c <- t.children)
thisMethod(c)
})(root)
Run Code Online (Sandbox Code Playgroud)
(相关问题:哪些语言支持*递归*函数文字/匿名函数?)
我知道这不是匿名函数的用途,但就像我试图通过匿名函数创建递归函数一样.递归函数的原型显然是阶乘函数.问题是,这是很难做出区分的情况下内的匿名函数.到目前为止我设法做的是:
f=@(cn,n,f)eval('if n>1; f(cn*n,n-1,f);else;ans=cn;end');
f=@(n)f(1,n,f);
Run Code Online (Sandbox Code Playgroud)
或者:
f=@(cn,n,f)eval('if n>1; f(cn*n,n-1,f);else;disp(cn);end');
f=@(n)f(1,n,f);
Run Code Online (Sandbox Code Playgroud)
不太令人满意的是,直接分配时仍然无法使用此功能,a=f(3)
仍会产生错误,因为eval
没有得到值.
所以我的问题是,您是否可以通过匿名函数实际执行递归函数,例如以允许例如a=f(3)
仅依赖于本机matlab函数(或者您可以在命令行中创建的函数,如我在示例中所做的那样)计算阶乘的方式?
PS:我知道这没有任何实际用途,这只是对你可以弯曲和滥用Matlab语法的挑战.