| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2013 人关注过本帖
标题:递归实现数字的逆序 1234 -> 4321 ?????
只看楼主 加入收藏
我爱敲代码
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:70
专家分:165
注 册:2013-4-23
收藏
得分:0 
回复 9楼 Susake
代码中加一句  puts("");有啥作用啊,求指教!!!
2013-05-11 19:13
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
换行!

仰望星空...........不忘初心!
2013-05-11 19:24
bccn新
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:57
专家分:144
注 册:2013-5-10
收藏
得分:0 
#include<stdio.h>
main()
{int a;
  int reverse(int);
  printf("please input a number:");
  scanf("%d",&a);
  reverse(a);
}
int reverse(int n)
{while(n!=0)
  {printf("%d",n%10);
  n/=10;
  }
}
建议定义为长整形,可以处理更大的数
2013-05-11 21:25
计科1102
Rank: 1
等 级:新手上路
帖 子:56
专家分:9
注 册:2013-4-26
收藏
得分:0 
#include<stdio.h>
int count=0;
void reserve(int n)//非递归
{   
    int i,f=1,count=0;
    while(n!=0)
    {
        if(n%10==0&&f==1)//实现前面的0都不输出
        {
            n=n/10;
            count++;
        }
        else {
            f=0;   //遇到了非0的数字后,以后的0都要输出
            i=n%10;//得到余数
            n=n/10;//保存商
            printf("%d",i);
        }
    }
    printf("(有%d个0在最前面)",count);
}
int reserve1(int n)//递归
{
    int i;
    static int f=1;
   
    if(n<10)
    {
        printf("%d",n);
    }
    else if(n%10==0&&f==1)
        {
            count++;
            reserve1(n/10);//非尾递归   
        }
    else
    {   
        f=0;
        i=n%10;
        printf("%d",i);
        return (reserve1(n/10));//是尾递归
    }
   
}

void main()
{    int n;
    printf("请输入一个整形数字n:");
    scanf("%d",&n);
    reserve(n);
    printf("\n");
    reserve1(n);
    printf("(有%d个0在最前面)",count);
    printf("\n");
}
有递归和非递归的
2013-05-11 22:35
kalvinyu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:61
专家分:188
注 册:2012-10-31
收藏
得分:0 
回复 10楼 我爱敲代码
看到了。。我只是提点意见,在编写程序的时候一定要考虑周全。不然会给第二次设计带来麻烦
2013-05-27 14:29
zhu_zhi
Rank: 2
来 自:广西百色
等 级:论坛游民
帖 子:129
专家分:92
注 册:2013-4-25
收藏
得分:0 
我这递归法求逆序数蛮简洁的,试一下吧!
#include<stdio.h>
void main()
{
    void szdp(int n);
    int m;
    printf("请输入需要倒排的数字:");
    scanf("%d",&m);
    printf("该数字倒排如下:\n");
    szdp(m);
}
void szdp(int n)
{
    int y;
    y=n%10;
    if(n>0)
    {
    printf("%d",y);
    n=(n-y)/10;
    szdp(n);
    }
    else printf("\n");
}
2013-05-27 16:51
zhu_zhi
Rank: 2
来 自:广西百色
等 级:论坛游民
帖 子:129
专家分:92
注 册:2013-4-25
收藏
得分:0 
回复 7楼 笑傲
楼主,你的代码有问题!不信,你调试类似1000等数字。
2013-05-27 17:01
zhu_zhi
Rank: 2
来 自:广西百色
等 级:论坛游民
帖 子:129
专家分:92
注 册:2013-4-25
收藏
得分:0 
回复 14楼 计科1102
楼主,你的代码有问题!不信,你调试类似1000等数字。
2013-05-27 17:04
快速回复:递归实现数字的逆序 1234 -> 4321 ?????
数据加载中...
 
   



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

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