递归专项练习(笔试练习)2

不知道大家有没有和小陈一样的想法,明明理解了递归的算法,可是当面对一道用递归来完成的题目时,却往往难以下手,这是我们的修为不够导致的,那么今天,小陈就由浅入深地为您详解一道递归小题,希望能帮到您


对于递归,我觉得很重要的一个事就是,这个函数的功能是什么,而这个,是完全由你自己来定义的。 所谓递归,就是会在函数内部代码中,调用这个函数本身,那么就引出了第二件重要的事情,我们必须要找出递归的结束条件,不然的话,会一直调用自己,进入无底洞。也就是说,我们需要找出当参数为啥时,递归结束,之后直接把结果返回

任务描述

  使用递归实现十进制转换二进制。

  输出输入整数的每一位数字,每个数字前有一个空格。

测试说明

测试用例

  输入:    7   输出:    111


主函数如下。

#include <stdio.h>
void DevToBin(int n );
int main()
{
    int n ;
    scanf("%d",&n);
    DevToBin(n);
    return 0 ;
}

 我们要使用递归实现十进制向二进制的转换,将DevToBin函数补全。

正数十进制转换二进制的方法:

将该数字不断除以2直到商为零,然后将余数由下至上依次写出,即可得到该数字的二进制表示

有了思路,我们开始写代码,方法和之前的那道题如出一辙。 

void DevToBin(int n)
{
    if(n<2)
    {
        printf("%d",n);//此为第二要素,即递归的出口,否则函数将无限递归下去。
    }
    else
    {
        DevToBin(n/2);
        printf("%d",n%2);//将打印函数置于fun函数之后,这样就会从递归的出口开始打印。
    }
}

希望能为大家带来帮助!

最后,如果您觉得我的文章写的不错。

请给小陈:

点赞,收藏加关注!我一定会带来更好的文章的!

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈大大陈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值