MST

星途 面试题库

面试题:Go函数的可变参数与递归调用

编写一个Go函数,它接受可变参数,计算这些参数的总和。同时,要求在这个函数内部使用递归的方式实现求和功能。请说明这种递归调用在函数调用规约方面需要注意的要点。
28.3万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
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都将切片去掉第一个元素,逐步缩小参数规模。