我写了以下代码
#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将为零,因此递归功能将返回主要而不打印任何东西。 请纠正我错在哪里。 在此先感谢!!
答案 0 :(得分:1)
程序输出正确。您的输出也包含这些值 -
if(a!=0)
printf("%d",a%10);
a
的值如果不是0
,也会打印出来。但是由于递归调用之后的这些语句,值从最后一个打印到第一个。
您认为输出为135799
。第二个9
是a%10
的值,但是来自先前递归调用的a%10
的值也将被打印,因为这些语句在递归调用结束后执行。
您可以在此example中看到。