我编写了以下代码
#include <stdio.h>
void recurse();
int main()
{
recurse();
return 0;
}
void recurse()
{
static int n=987654321;
if(n==0)
return ;
printf("%d",n%10);
n=n/100;
int a=n;
recurse();
if(a!=0)
printf("%d",a%10);
}
我不明白为什么输出是 135799753? 我认为答案是 135799,因为在打印 1357 之后的前 9 个之后,n 将变为 9,因此 n/100 将为零,因此递归函数将返回到主函数而不打印任何内容。 有不对的地方请指正。 提前致谢!!
最佳答案
程序输出正确。您的输出也包含这些值 -
if(a!=0)
printf("%d",a%10);
如果a
的值不是0
,也会被打印。但由于递归调用后的这些语句,这些值是从最后到第一个打印的。
您认为输出为135799
。第二个 9
是 a%10
的值,但之前的递归调用中的 a%10
的值也将被打印,因为这些语句在之后执行递归调用结束。
你可以在这个example中看到.
关于c - 递归循环跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43557075/