C语言(填空题) 读下列程序,写出程序的输出结果

(填空题) 读下列程序,写出程序的输出结果。
#include <stdio.h>

void sub (int *a, int n, int k)

{ if (k<=n) sub(a,n/2,2*k);

  *a+=k;

}

void main ()

{ int x=0;

 sub (&x,8,1);

 printf (“x=%d\n”,x);

} 输出结果为:

x=7

img

x=7
sub(0 8 1)->sub(0 4 2)->sub(0 2 4)
此时k>n
a=a+4=4
a+=2=6
a+=1=7
输出x=7