2014-09-11 64 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}]