爲什麼這斯卡拉遞歸遞歸在Python和Scala
def foo(id:Int): Int = {
if (id == 0) { return id } else { foo(id - 1) }
}
foo(2)
回報0
,而這條巨蟒遞歸返回None
?
def foo(id):
if id == 0:
return id
else:
foo(id - 1)
foo(2)
Python和Scala如何處理遞歸和管理嵌套的激活記錄?
我知道這樣Scala和Python解決方案都會返回相同的結果,但爲什麼我需要添加第二個return語句?這些遞歸處理的方式有哪些不同? – w4bo
@ w4bo,Scala執行* implicit *返回最後一個表達式。 Python不會,所以我們必須添加一個* explicit * return。遞歸可能處理相同。 – cdlane