3
我有一個功能,在某些情況下,我希望它在連續使用兩次,有沒有辦法來調用函數內部本身調用內部本身的功能
類似,我的功能是很長時間並且是阿貝爾做這樣的事情,這將節省大量的時間
func theFunc() {
count++
if count < 4 {
thFunc()
}
}
我有一個功能,在某些情況下,我希望它在連續使用兩次,有沒有辦法來調用函數內部本身調用內部本身的功能
類似,我的功能是很長時間並且是阿貝爾做這樣的事情,這將節省大量的時間
func theFunc() {
count++
if count < 4 {
thFunc()
}
}
這就是所謂的遞歸,這是完全合法的:
var count = 0
func theFunc() {
print(count)
count += 1
if count < 4 {
theFunc()
}
}
theFunc() // 0 1 2 3
唯一的竅門是不要緩解太深,因爲你可能會耗盡資源,並且不要忘記放置某種「塞子」(例如你的if count < 4
),以免永久遞歸,導致(哦諷刺)堆棧溢出。
[專家額外:有一些語言,如LISP,爲遞歸進行了優化,並且遞歸實際上更喜歡循環!但斯威夫特並不是真正的那種。]
你試過了嗎?你做了什麼事? – matt