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

本文通过两个递归函数实例,详细解析了递归函数的调用过程与执行原理。特别是针对递归深入与返回过程中的变量状态变化进行了说明,帮助读者理解递归函数的工作机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值