2016-02-24 75 views
3

我有一個功能,在某些情況下,我希望它在連續使用兩次,有沒有辦法來調用函數內部本身調用內部本身的功能

類似,我的功能是很長時間並且是阿貝爾做這樣的事情,這將節省大量的時間

func theFunc() { 
count++ 
if count < 4 { 
thFunc() 
} 
} 
+0

你試過了嗎?你做了什麼事? – matt

回答

5

這就是所謂的遞歸,這是完全合法的:

var count = 0 
func theFunc() { 
    print(count) 
    count += 1 
    if count < 4 { 
     theFunc() 
    } 
} 
theFunc() // 0 1 2 3 

唯一的竅門是不要緩解太深,因爲你可能會耗盡資源,並且不要忘記放置某種「塞子」(例如你的if count < 4),以免永久遞歸,導致(哦諷刺)堆棧溢出。

[專家額外:有一些語言,如LISP,爲遞歸進行了優化,並且遞歸實際上更喜歡循環!但斯威夫特並不是真正的那種。]