这个递归是怎么理解的?

是一个在c primer plus 上的一个二进制转换程序,但是我不理解这段被调函数的运行过程,自己在本子上弄了一下还是没理解。


#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void to_binary(unsigned long n);

int main(void)
{
    unsigned long number;
    printf("enter an integer (q to quit):\n");
    while (scanf("%lu", &number) == 1)
    {
        printf("binary equivalent:");
        to_binary(number);
        putchar('\n');
        printf("enter an integer (q to quit):\n");

    }
    printf("done.\n");

    return 0;
}

void to_binary(unsigned long n)
{
    int r;
    r = n % 2;
    if (n >= 2)
        to_binary(n / 2);
    putchar(r == 0 ? '0' : '1');  
    return;
}


11=3
110=6
1100=12
11000=24

想明白这个规律你大概就明白了