结果函数中的递归函数是如何工作的



我被返回函数弄糊涂了

#include <iostream>
using namespace std;
int result(int n)
{
if (n <= 10) {
return n;
}
else {
int a = n % 10;
cout << a << endl;
int b = n / 10;
cout << b << endl;
//*this part is complicated*
return a + result(a + b);
}
}
int main()
{
cout << result(5126);
return 0;
}

像写作测试一样进行。

  1. 调用result()函数,其值为5126
  2. Result()函数将询问计算机:是否5126小于或等于到10
  3. 正如你所看到的,它不是,所以它将继续到";其他部分">
  4. 然后,它将把5126modulo的模运算结果相加10,也就是6的,所以现在a";等于6
  5. 它将打印"0"的值a";,a = 6
  6. 然后,它将添加512610之间的除法结果是512.6(由于它是浮点并且变量是整数,编译器将其视为512),所以现在">b";等于512,它将打印它
  7. 这里是当递归打开时,我们将调用虚变量total,其现在具有值"0">a";即6加上运行result()函数,其值为a加b,即512+6
  8. 我们在结果函数中再次输入,但现在n518,Result()函数将询问计算机:Is518小于或等于10
  9. 正如你所看到的,它不是,所以它将继续到">其他部分">
  10. 然后,它将把518模的模运算结果相加10,也就是8的,所以现在a">等于8
  11. 它将打印"0"的值a";,a = 8
  12. 然后,它将添加51810之间的除法结果是51.8所以现在">b">等于51,它将打印它
  13. 我们的虚变量总和现在的值为6加上8使用a+b值运行result()函数的结果是51+8
  14. 我们在结果函数中再次输入,但现在n59,Result()函数将询问计算机:59是否小于或等于10
  15. 正如你所看到的,它不是,所以它将继续到">其他部分">
  16. 然后,它将加上59模运算的结果10,也就是9的,所以现在a">等于9,它将打印它
  17. 然后,它将添加5910之间的除法结果是5.9所以现在">b">等于5,它将打印它
  18. 我们的虚变量总和现在的值为6+8+9使用a+b值运行result()函数的结果是5+9
  19. 我们在结果函数中再次输入,但现在n14,Result()函数将询问计算机:14是否小于或等于10
  20. 正如你所看到的,它不是,所以它将继续到">其他部分">
  21. 然后,它将把14模的模运算结果相加10,这是4的,所以现在,">a";等于4,它将打印它
  22. 然后,它将添加1410之间的除法结果是1.4所以现在">b";等于1,它将打印它
  23. 我们的虚变量总和现在的值为6+8+9+4使用a+b值运行result()函数的结果是4+1
  24. 我们在结果函数中再次输入,但现在n5,Result()函数将询问计算机:Is5小于或等于10
  25. 正如您所看到的,5小于10,所以现在它只返回n,即5,所有递归都将结束
  26. 所以现在我们的虚变量total现在的值为6+8+9+4+5,没有更多操作,因此它只返回总数32,并将打印出来

希望你能理解所有的解释,如果你使用写作测试会更容易,祝你好运。

相关内容

  • 没有找到相关文章