C primer plus 第八章 例题疑问(递归)(求解答求回复)

来源:互联网 发布:mysql可视化面板 编辑:程序博客网 时间:2024/05/16 03:39
#include <stdio.h>void up_and_down(int);int main(void){    up_and_down(1);    return 0;}void up_and_down(int n){    printf("NO1: Level %d: n location %p\n", n, &n);  //语句1    if(n < 4)        up_and_down(n+1);    printf("NO2: Level %d: n location %p\n", n, &n);  //语句2}

以下是输出界面:
输出界面

然后,我稍微修改了下语句1及语句2,可以知道1-4递增的是语句1,4-1递减的是语句2,我的疑问就是:4-1输出语句2的原理是什么?请指教。

/*******************************************************        以二进制形式输出整数*******************************************************/#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_s("%ul", &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');                //原例子中为  putchar('0' + r),其中的参数更换位置,结果一样;另外这个putchar()里参数函数也不甚明白。//  putchar(r);                      //如果其中没有'0'是代表什么?在此一试。试出的结果是:不知名的符号。书上写明的:“如果r是0,表达式'0'+r就是字符0。    putchar(r ? '1': '0');           //此处没看懂,'0'和'1'所代表的含义。    return;}
1 0