什么值'返回0;'语句在C++中的用户定义函数中精确返回

t9eec4r0  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(136)

我在w3schools上用cpp学习这个递归程序。

  1. #include <iostream>
  2. using namespace std;
  3. int sum(int k) {
  4. if (k > 0) {
  5. return k + sum(k - 1);
  6. } else {
  7. return 0;
  8. }
  9. }
  10. int main() {
  11. int result = sum(10);
  12. cout << result;
  13. return 0;
  14. }

在上面的递归函数中有一个条件块。假设它最终会转到'else'块,0的值将从函数返回。然而,我很困惑,函数调用sum(10)是如何正常工作的,而不仅仅是返回0
谁能给我解释一下递归。

c8ib6hqw

c8ib6hqw1#

扩展我的评论,递归函数调用没有什么特别的。它就像任何其他函数调用一样。
让我们以下面的例子为例:

  1. int c(int k)
  2. {
  3. return 0;
  4. }
  5. int b(int k)
  6. {
  7. return k + c(k - 1);
  8. }
  9. int a(int k)
  10. {
  11. return k + b(k - 1);
  12. }
  13. int main(void)
  14. {
  15. std::cout << a(2) << '\n';
  16. }

调用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

展开查看全部

相关问题