当有 2 个或更多递归函数写入 togeather 时,程序如何执行?
how is program executed when there are 2 or more recursion function written togeather?
return((count-2)+(count-1))
行在下面的程序中是如何工作的cpp
? 给定代码的 ans 是-18.如何在不运行代码的情况下了解 ans 在两个function count(n-2)
和count(n-1)
中,哪一个首先被称为,它是如何决定的?
#include <iostream>
using namespace std;
int count(int n);
int main() {
int n, m;
n = 4;
m = count(n);
cout << m;
}
int count(int n)
{
if (n<0)
{
return n;
}
else
{
return (count(n - 2) + count(n - 1));
}
}
+
运算符的左侧和右侧之间没有排序。因此,首先评估哪一个是未知的(留给编译器(。
弄清楚它的唯一方法是在调试器中逐行、逐语句、逐个表达式地进行编码。
但是,由于每个递归调用都不依赖于任何副作用,因此它们可以彼此独立地执行,因此顺序无关紧要,因为结果总是相同的。
我们可以简单地绘制一个二叉树来知道答案,而无需编译它。只需开始将分支分成两个计数(n-1(和计数(n-2(,然后添加所有树叶。 就像如果我们把 n 作为 4,它将被拆分为 3 和 2,这将是 4 的两个分支。类似地,递归地将节点分解为分支。3 将拆分为 1 和 2,依此类推。直到叶子节点小于 0。最后,添加所有叶子的价值以获得答案。
相关文章:
- 程序在执行程序的其余部分之前退出
- libprotobuf 检查在 Mac OS 上执行程序时失败
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 在另一台 PC 上执行程序时加载 SDL2 共享库时出错
- 从 GUI 文件资源管理器执行程序,并且不生成终端
- 测试操作系统时执行程序集"sti"时虚拟框崩溃
- 重新执行C++程序会加快速度
- 如何用共享库替换可执行C++程序的功能?
- 编译并执行C#程序中的C++代码
- 如果我在 Linux 上更改C++动态共享库,而我的可执行程序在其上使用,会发生什么
- 在C++中,系统如何将这些对象中的每一个与执行程序的窗口相关联?
- 命令行参数执行C 程序
- 按 e 执行程序C++
- 在返回另一个函数的函数中执行程序期间出错
- 如何使用"trusty"映像在本地执行C++程序的Travis CI?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- execve(..) 不执行程序,尽管传入了 PATH 变量
- 在机器异常之后重新执行程序
- 调试和发布库及其可执行程序
- 当访问者进入网站时执行C++程序