我试图理解递归是如何工作的。我似乎不明白这个多重递归是如何工作的。请帮忙,谢谢!
#include<stdio.h>
int R(int x);
int main()
{
R(5);
return 0;
}
int R(int x)
{
if(x > 0){
x--;
R(x);
R(x - 2);
printf("%d ", x);
}
}
最佳答案
R(5)
调用 R(4)
来显示一些内容,然后调用 R(2)
来显示一些内容。之后R(5)
显示4
。这就是为什么您会在输出末尾看到 4。
R(4)显示 - R(2)显示 - 4
在 4 之前显示 R(2)
。 R(2)
调用 R(1)
显示某些内容,然后调用 R(0)
不显示任何内容。 R(2)
显示1
。这就是为什么最后有一个 1,就在 4 之前。
R(4)显示 - R(1)显示 - R(0)显示 - 1 4
等等...
R(4)显示 - R(1)显示 - 1 4
R(4)显示 - 0 1 4
您始终从末尾开始处理 R()display 调用(首先是右侧)。
正如您所看到的,递归性将反转数字的顺序(4,最大的数字,是最后一个)。这是因为在递归调用 R 之后有 printf
。
关于谁能解释并跟踪以下多重递归 C 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37522312/