面试题答案
一键面试package main
import (
"fmt"
)
func sumRecursive(nums ...int) int {
if len(nums) == 0 {
return 0
}
return nums[0] + sumRecursive(nums[1:]...)
}
在函数调用规约方面需要注意以下要点:
- 递归终止条件:必须要有明确的递归终止条件,如上述代码中
if len(nums) == 0
,否则会导致无限递归,最终耗尽系统资源导致程序崩溃。 - 参数传递:每次递归调用都要确保传递的参数能够逐渐逼近递归终止条件,如上述代码中每次调用
sumRecursive
都将切片去掉第一个元素,逐步缩小参数规模。