递归是一种调用函数本身的技术。该技术提供了一种将复杂问题分解为更容易解决的简单问题的方法。
递归可能有点难以理解。弄清楚它是如何工作的最好方法就是进行实验。
将两个数字相加很容易,但将一系列数字相加则更复杂。在以下示例中,递归用于将一系列数字相加,将其分解为将两个数字相加的简单任务:
int sum(int k);
int main() {
int result = sum(10);
printf("%d", result);
return 0;
}
int sum(int k) {
if (k > 0) {
return k + sum(k - 1);
} else {
return 0;
}
}
亲自试一试 »
当。。。的时候sum()
函数被调用,它添加参数k
小于所有数字的总和k
并返回结果。当 k 变为 0 时,该函数仅返回 0。运行时,程序执行以下步骤:
由于该函数在以下情况下不会调用自身k
为 0 时,程序停止并返回结果。
开发人员应该非常小心递归,因为很容易编写一个永远不会终止的函数,或者使用过量内存或处理器能力的函数。然而,如果正确编写,递归可以是一种非常高效且数学上优雅的编程方法。
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!