| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 275 人关注过本帖
标题:杨兄弟及各位大虾,我用递归写了一个东东,你帮我看看算不算中规中矩
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏
已结贴  问题点数:20 回复次数:6 
杨兄弟及各位大虾,我用递归写了一个东东,你帮我看看算不算中规中矩
程序代码:
#include<stdio.h>
//看看能不能用递归写一个10进制转2进制的东东
int i=0;    //貌似这个全局变量无法省略啊
void dec2bin(char bin[],int dec)
{
    if(dec==0) return;
    dec2bin(bin,dec/2);
    bin[i]=dec%2+48;
    i++;
}

int main(void)
{
    char test[100];
    for(int i=0;i<100;i++) test[i]='\0';
    dec2bin(test,357);
    printf("dec2bin=%s\n",test);
    return 0;
}
最近坛子里有xd说递归很难
其实我对递归也是很不感冒的
今日突发奇想,我认为10转2进制变换 用递归很合适,于是就写了一个

[ 本帖最后由 wp231957 于 2012-11-27 14:46 编辑 ]
2012-11-27 13:51
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:10 
程序代码:
#include <stdio.h>
void dec2bin(char bin[], int num, int &i)
{
    if (0 == num)
    {
        i = 0;
        return;
    }
    dec2bin(bin, num / 2, i);
    bin[i++] = num % 2 + '0';
}
void main()
{
    char bin[100] = {'\0'};
    int i;
    dec2bin(bin, 245, i);
    printf("%s\n", bin);
}


[fly]存在即是合理[/fly]
2012-11-27 14:35
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
程序代码:
#include <stdio.h>
void Out(int num)
{
    if (0 == num)    return;
    Out(num / 2);
    printf("%d", num % 2);
}
void main()
{
    Out(6);
    printf("\n");
}
这样写简单


[fly]存在即是合理[/fly]
2012-11-27 14:38
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
int _sum=0;
int sum(int s)
{
    if (s==0) return _sum;
    sum(s-1);
    _sum+=s;
    return _sum;    //疑问:这句代码为啥是最后被返回  而不是回溯代码呢 上面2句代码都被回溯成功的
}
类似求1---x的连续自然数之和 貌似也可以用递归来写

[ 本帖最后由 wp231957 于 2012-11-27 14:45 编辑 ]

DO IT YOURSELF !
2012-11-27 14:38
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
三楼的写法固然简洁,但是不是我心目中的写法
二楼的写法貌似避免了全局变量 ,待我研究一下

DO IT YOURSELF !
2012-11-27 14:43
lxsjzbd
Rank: 4
来 自:河北省
等 级:业余侠客
帖 子:97
专家分:258
注 册:2012-3-31
收藏
得分:10 
这样也行的:
void dec2bin(char bin[], int num)
{
    static int i = 0;
    if(0 == num)
    {
        return;
    }
    dec2bin(bin, num/2);
    bin[i++] = num%2 + '0';
}
2012-11-27 15:05
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用lxsjzbd在2012-11-27 15:05:00的发言:

这样也行的:
void dec2bin(char bin[], int num)
{
    static int i = 0;
    if(0 == num)
    {
        return;
    }
    dec2bin(bin, num/2);
    bin = num%2 + '0';
}
static int i = 0;
刚搜了一下  貌似这个语句和设置一个全局变量 没差太多
只不过它在函数体内部  也许比全局变量优秀一些

DO IT YOURSELF !
2012-11-27 15:12
快速回复:杨兄弟及各位大虾,我用递归写了一个东东,你帮我看看算不算中规中矩
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012660 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved