我在w3schools上用cpp学习这个递归程序。
#include <iostream>
using namespace std;
int sum(int k) {
if (k > 0) {
return k + sum(k - 1);
} else {
return 0;
}
}
int main() {
int result = sum(10);
cout << result;
return 0;
}
在上面的递归函数中有一个条件块。假设它最终会转到'else'块,0
的值将从函数返回。然而,我很困惑,函数调用sum(10)
是如何正常工作的,而不仅仅是返回0
。
谁能给我解释一下递归。
1条答案
按热度按时间c8ib6hqw1#
扩展我的评论,递归函数调用没有什么特别的。它就像任何其他函数调用一样。
让我们以下面的例子为例:
调用
a(2)
将执行return 2 + b(1);
调用
b(1)
将执行return 1 + c(0);
调用
c(0)
将执行return 0;
这实际上与问题中递归示例中的
sum(2)
调用相同:调用
sum(2)
将执行return 2 + sum(1);
调用
sum(1)
将执行return 1 + sum(0);
调用
sum(0)
将执行return 0;
结果是
2 + 1 + 0
,等于3
。