You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请问我编写的递归代码调用属于尾调用还是普通递归?

你的递归调用属于尾调用

先贴出你的代码:

void sum(const int values[], size_t count,int* result){ 
    if(count <= 0) return; 
    *result += values[0]; 
    sum(values + 1,count - 1,result); 
}

你对尾调用的理解没错——尾调用就是函数的最后一个操作是调用另一个函数,且调用后没有任何需要执行的后续逻辑。

回到你的代码:当count > 0时,代码先执行*result += values[0]更新结果,之后就执行递归调用sum(values + 1, count - 1, result),这个调用是当前函数的最后一条执行语句,调用完成后当前函数直接结束,没有任何额外操作需要处理。完全符合尾调用的定义,所以这是尾调用,不是普通递归。

内容的提问来源于stack exchange,提问作者Роман Полоз

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 10:58:10