2014-09-11 60 views

回答

0

你究竟是什么意思?总结前n个立方体最好通过计算(n^2 *(n + 1)^ 2)/ 4来完成,但是如果给出一个数列表来对它们的立方体进行求和,那么这并不是一个可选方案。

如果您使用的是尾部调用优化的语言,则建议使用尾部调用递归实现。如果你不这样做,如果你更容易推理(组织代码的一个非常重要的方面),那么编写递归函数仍然值得。但请记住,深度n的递归将取决于您的语言,编译器等,从4 * n到至少几个100 * n字节的内存,并且堆栈空间不是无限的。

我会去大多数语言的循环。对于大n而言,因为它更节约资源,对于小n而言,因为我觉得比递归版本更容易阅读。但是这与我的个人背景和经验息息相关,对于您和其他任何需要使用您的代码的人来说,更容易完全不同。

0

这取决于你想完成什么。如果您希望它依赖于以前的结果,则可以使其递归。否则,我会建议让它不递归。

0

大多数编译语言有尾递归的简单情况拆除和这样不会是一个问题。数学人员发现编写函数式语言更容易,递归对他们来说更自然。但是,您可以可以非常有效地写:

var sumOf0To10Cubes = Enumerable.Range(0, 10).Select(o => Math.Pow(o, 3)).Sum(); 

需要注意的是数学的人喜欢:

Sum[x^3,x->{0,10}]